库名称:transformers
标签:
- 文本转语音
- 标注
许可证:apache-2.0
支持语言:
- 英语
- 阿萨姆语
- 孟加拉语
- 古吉拉特语
- 印地语
- 卡纳达语
- 克什米尔语
- 奥里亚语
- 马拉雅拉姆语
- 马拉地语
- 尼泊尔语
- 旁遮普语
- 梵语
- 信德语
- 泰米尔语
- 泰卢固语
- 乌尔都语
- 奥罗莫语
管道标签:文本转语音
推理:false
数据集:
- ai4b-hf/GLOBE-annotated
Indic Parler-TTS预训练模型
Indic Parler-TTS预训练模型是Parler-TTS Mini的多语言印度语扩展版本。
该模型基于8,385小时的多语言印度语和英语数据集训练,并与其微调版本Indic Parler-TTS一同发布。
Indic Parler-TTS预训练Mini官方支持20种印度语言,使其成为区域语言技术的全面解决方案,同时也支持英语。支持的21种语言包括:阿萨姆语、孟加拉语、博多语、多格里语、英语、古吉拉特语、印地语、卡纳达语、孔卡尼语、迈蒂利语、马拉雅拉姆语、曼尼普尔语、马拉地语、尼泊尔语、奥里亚语、梵语、桑塔利语、信德语、泰米尔语、泰卢固语和乌尔都语。
得益于其更优的提示标记器,该模型可以轻松扩展到其他语言。该标记器拥有更大的词汇量并支持字节回退,简化了多语言训练。
🚨 本作品是HuggingFace音频团队与**AI4Bharat团队**合作的成果。🚨
📖 快速索引
👨💻 安装
使用Parler-TTS就像说"bonjour"一样简单。只需安装一次库:
pip install git+https://github.com/huggingface/parler-tts.git
🛠️ 核心功能
该模型接受两个主要输入:
- 文本 - 需要转换为语音的文本。
- 描述 - 详细说明语音应如何发声,例如:"Leela以高音调、快节奏和欢快的语气说话,充满活力和快乐。录音质量非常高,没有背景噪音。"
主要特性
-
语言支持
- 官方支持语言:阿萨姆语、孟加拉语、博多语、多格里语、卡纳达语、马拉雅拉姆语、马拉地语、梵语、尼泊尔语、英语、泰卢固语、印地语、古吉拉特语、孔卡尼语、迈蒂利语、曼尼普尔语、奥里亚语、桑塔利语、信德语、泰米尔语和乌尔都语。
- 非官方支持:恰蒂斯加尔语、克什米尔语、旁遮普语。
-
说话人多样性
- 支持语言中共有69种独特声音。
- 每种支持的语言都有一组推荐声音,优化了自然度和可懂度。
-
情感渲染
- 10种语言官方支持情感特定提示:阿萨姆语、孟加拉语、博多语、多格里语、卡纳达语、马拉雅拉姆语、马拉地语、梵语、尼泊尔语和泰米尔语。
- 其他语言的情感支持存在但未经广泛测试。
- 可用情感包括:命令、愤怒、叙述、对话、厌恶、恐惧、快乐、中性、专有名词、新闻、悲伤和惊讶。
-
口音灵活性
- 该模型官方支持印度英语口音,通过其英语声音提供清晰自然的语音。
- 对于其他口音,模型允许通过指定口音细节(如"英国男性说话人"或"美国女性说话人")进行自定义,使用风格转换以获得更动态和个性化的输出。
-
可定制输出
Indic Parler-TTS预训练模型通过描述输入提供对多种语音特征的精确控制:
- 背景噪音:调整音频中的噪音水平,从清晰到略有噪音的环境。
- 混响:控制语音的感知距离,从近距离到远距离的声音。
- 表现力:指定语音应如何动态或单调,从富有表现力到略有表现力或单调。
- 音高:修改语音的音高,包括高音、低音或平衡音调。
- 语速:改变语速,从慢到快。
- 语音质量:控制语音的整体清晰度和自然度,从基本到精细的语音质量。
🎲 随机语音
🚨 与之前版本的Parler-TTS不同,这里我们使用两个标记器 - 一个用于提示,一个用于描述。🚨
Indic Parler-TTS预训练模型已训练为通过简单的文本提示生成可控制的语音特征,例如:
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("ai4bharat/indic-parler-tts-pretrained").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts-pretrained")
description_tokenizer = AutoTokenizer.from_pretrained(model.config.text_encoder._name_or_path)
prompt = "嘿,你今天怎么样?"
description = "一位带有英国口音的女性说话人以略微富有表现力和生动的语气,以中等速度和音高进行演讲。录音质量非常高,说话人的声音清晰且非常接近。"
description_input_ids = description_tokenizer(description, return_tensors="pt").to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").to(device)
generation = model.generate(input_ids=description_input_ids.input_ids, attention_mask=description_input_ids.attention_mask, prompt_input_ids=prompt_input_ids.input_ids, prompt_attention_mask=prompt_input_ids.attention_mask)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("indic_tts_out.wav", audio_arr, model.config.sampling_rate)
Indic Parler-TTS预训练模型通过描述性说明提供了对语音合成关键方面的高度有效控制。以下是每个控制参数可实现的功能摘要:
控制类型 |
功能 |
背景噪音 |
调整背景噪音水平,支持清晰和略有噪音的环境。 |
混响 |
控制说话人声音的感知距离,允许近距离或远距离的声音。 |
表现力 |
调节语音的情感强度,从单调到高度富有表现力。 |
音高 |
改变音高以实现高音、低音或中等音调输出。 |
语速 |
改变语音传递速度,从慢到快节奏。 |
语音质量 |
提高或降低整体音频清晰度,支持基本到精细的输出。 |
🌍 切换语言
模型会自动适应其在提示中检测到的语言。您无需指定要使用的语言。例如,要切换到印地语,只需使用印地语提示:
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("ai4bharat/indic-parler-tts-pretrained").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts-pretrained")
description_tokenizer = AutoTokenizer.from_pretrained(model.config.text_encoder._name_or_path)
prompt = "अरे, तुम आज कैसे हो?"
description = "一位女性说话人以略微富有表现力和生动的语气,以中等速度和音高进行演讲。录音质量非常高,说话人的声音清晰且非常接近。"
description_input_ids = description_tokenizer(description, return_tensors="pt").to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").to(device)
generation = model.generate(input_ids=description_input_ids.input_ids, attention_mask=description_input_ids.attention_mask, prompt_input_ids=prompt_input_ids.input_ids, prompt_attention_mask=prompt_input_ids.attention_mask)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("indic_tts_out.wav", audio_arr, model.config.sampling_rate)
🎯 使用特定说话人
为确保跨生成过程的说话人一致性,此检查点还针对预定的说话人进行了训练,其特征包括姓名(例如Rohit、Karan、Leela、Maya、Sita等)。
要利用这一点,只需调整您的文本描述以指定要使用的说话人:Divya的声音单调但传递速度略快,录音非常接近,几乎没有背景噪音。
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("ai4bharat/indic-parler-tts-pretrained").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts-pretrained")
description_tokenizer = AutoTokenizer.from_pretrained(model.config.text_encoder._name_or_path)
prompt = "अरे, तुम आज कैसे हो?"
description = "Divya的声音单调但传递速度略快,录音非常接近,几乎没有背景噪音。"
description_input_ids = description_tokenizer(description, return_tensors="pt").to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").to(device)
generation = model.generate(input_ids=description_input_ids.input_ids, attention_mask=description_input_ids.attention_mask, prompt_input_ids=prompt_input_ids.input_ids, prompt_attention_mask=prompt_input_ids.attention_mask)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("indic_tts_out.wav", audio_arr, model.config.sampling_rate)
该模型包含69位说话人,涵盖18种官方支持的语言,每种语言都有一组推荐声音以获得最佳性能。以下是基于提供数据的表格:
语言 |
可用说话人 |
推荐说话人 |
阿萨姆语 |
Amit, Sita, Poonam, Rakesh |
Amit, Sita |
孟加拉语 |
Arjun, Aditi, Tapan, Rashmi, Arnav, Riya |
Arjun, Aditi |
博多语 |
Bikram, Maya, Kalpana |
Bikram, Maya |
恰蒂斯加尔语 |
Bhanu, Champa |
Bhanu, Champa |
多格里语 |
Karan |
Karan |
英语 |
Thoma, Mary, Swapna, Dinesh, Meera, Jatin, Aakash, Sneha, Kabir, Tisha, Chingkhei, Thoiba, Priya, Tarun, Gauri, Nisha, Raghav, Kavya, |
|