模型简介
模型特点
模型能力
使用案例
库名称:transformers 标签:
- 文本转语音
- 标注 许可证:apache-2.0 语言:
- 英语
- 阿萨姆语
- 孟加拉语
- 古吉拉特语
- 印地语
- 卡纳达语
- 克什米尔语
- 奥里亚语
- 马拉雅拉姆语
- 马拉地语
- 尼泊尔语
- 旁遮普语
- 梵语
- 信德语
- 泰米尔语
- 泰卢固语
- 乌尔都语
- 奥罗莫语 管道标签:文本转语音 推理:false 数据集:
- ai4b-hf/GLOBE-annotated

Indic Parler-TTS
Indic Parler-TTS 是 Parler-TTS Mini 的多语言印度语扩展版本。
它是在 1,806小时 的多语言印度语和英语数据集上微调的 Indic Parler-TTS Pretrained 版本。
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").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts")
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").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts")
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").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts")
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, Ravi, Vikas, Riya | Thoma, Mary |
古吉拉特语 | Yash, Neha | Yash, Neha |
印地语 | Rohit, Divya, Aman, Rani | Rohit, Divya |
卡纳达语 | Suresh, Anu, Chetan, Vidya | Suresh, Anu |
马拉雅拉姆语 | Anjali, Anju, Harish | Anjali, Harish |
曼尼普尔语 | Laishram, Ranjit | Laishram, Ranjit |
马拉地语 | Sanjay, Sunita, Nikhil, Radha, Varun, Isha | Sanjay, Sunita |
尼泊尔语 | Amrita | Amrita |
奥里亚语 | Manas, Debjani | Manas, Debjani |
旁遮普语 | Divjot, Gurpreet | Divjot, Gurpreet |
梵语 | Aryan | Aryan |
泰米尔语 | Kavitha, Jaya | Jaya |
泰卢固语 | Prakash, Lalitha, Kiran | Prakash, Lalitha |
提示:
- 我们设置了一个推理指南来加快生成速度。考虑SDPA、torch.compile、批处理和流式处理!
- 包含术语“非常清晰的音频”以生成最高质量的音频,以及“非常嘈杂的音频”以产生高水平的背景噪音。
- 可以使用标点符号来控制生成的韵律,例如使用逗号在语音中添加小的停顿。
- 其余的语音特征(性别、语速、音高和混响)可以直接通过提示控制。
一些描述示例
-
Aditi - 略微高音调,表现力强的语气:
“Aditi以略微高音调在近距离环境中说话。她的声音清晰,带有微妙的情感深度和正常语速,录音质量高。” -
Sita - 快速,略微单调:
“Sita以快语速和略微低音调的声音说话,在近距离环境中清晰捕捉,录音质量极佳。” -
Tapan - 男性,中等语速,略微单调:
“Tapan以中等语速和略微单调的语气说话。录音清晰,声音接近,只有极少的背景噪音。” -
Sunita - 高音调,快乐语气:
“Sunita以高音调在近距离环境中说话。她的声音清晰,带有轻微的动态变化,录音质量极佳。” -
Karan - 高音调,积极语气:
“Karan的高音调、引人入胜的声音在清晰、近距离的录音中捕捉。他稍慢的传递传达出积极的语气。” -
Amrita - 高音调,平淡语气:
“Amrita以高音调和慢语速说话。她的声音清晰,录音质量极佳,只有中等水平的背景噪音。” -
Aditi - 慢速,略微表现力:
“Aditi以慢速、高音调和表现力强的语气说话。录音清晰,展示了她充满活力和情感的声音。” -
年轻男性说话者,美国口音:
“一位带有高音调美国口音的年轻男性说话者以稍快的语速在清晰、近距离的录音中说话。” -
Bikram - 高音调,紧急语气:
“Bikram以高音调和快语速说话,传达出紧迫感。录音清晰且亲密,情感深度丰富。” -
Anjali - 高音调,中性语气:
“Anjali以高音调和正常语速在清晰、近距离的环境中说话。她的中性语气以极佳的音频质量捕捉。”
📐 评估
Indic Parler-TTS 已通过类似MOS的框架由母语和非母语人士进行评估。结果突出了其在生成自然和清晰语音方面的卓越性能,特别是对于印度语言的母语者。
NSS 代表 母语者评分:
语言 | NSS预训练 (%) | NSS微调 (%) | 亮点 |
---|---|---|---|
阿萨姆语 | 82.56 ± 1.80 | 87.36 ± 1.81 | 清晰、自然的合成,表现力极佳。 |
孟加拉语 | 77.41 ± 2.14 | 86.16 ± 1.85 | 高质量输出,语调流畅。 |
博多语 | 90.83 ± 4.54 | 94.47 ± 4. |




