Text-To-Speech(TTS)文字配音模型是一种用于将文本信息转换成自然语音的技术。TTS大模型有很多,比如OpenAI,智谱,VITS(强大、开源),CosyVoice(开源),Fish Speech (开源),GPT-SoVITS 等。
常见的开源的TTS开源模型
在文字配音大模型领域,开源项目为开发者和研究者提供了丰富的资源和灵活性。以下是一些备受关注的开源文字配音模型:
- VITS :
Variational Inference with adversarial learning for end-to-end Text-to-Speech
-
特点: VITS 是一种基于变分推理和对抗学习的端到端文本转语音模型,能够生成高质量、自然的语音。
-
优势: 音质优秀,能够处理长文本,支持多语言。
-
适用场景: 学术研究、定制化语音合成、多语言配音等。
- StyleTTS 2:
-
特点: StyleTTS 2 是一种基于风格迁移的文本转语音模型,能够生成具有不同风格的语音。
-
优势: 风格可控,能够模拟不同人的声音,音质自然。
-
适用场景: 个性化语音定制、风格化配音、语音克隆等。
- So-VITS-SVC 4.0:
-
特点: So-VITS-SVC 4.0 是一种基于 VITS 的改进模型,支持更灵活的语音合成和风格迁移。
-
优势: 功能强大,支持多种语言,能够进行细致的音色调整。
-
适用场景: 专业配音、语音定制、音乐创作等。
- RVC (Retrieval-based Voice Conversion):
-
特点: RVC 是一种基于检索的语音转换模型,能够将一个人的声音转换为另一个人的声音。
-
优势: 简单易用,效果自然,支持实时转换。
-
适用场景: 语音转换、娱乐配音、个性化语音定制等。
- ChatTTS:
-
特点: ChatTTS 针对对话场景进行了优化,能够生成自然流畅的对话语音。
-
优势: 适用于对话系统、聊天机器人等场景,支持多说话人。
-
适用场景: 对话式 AI、语音助手、智能客服等。
更多开源TTS大模型可以在 Hugging Face上查找。
https://huggingface.co/models?pipeline\_tag=text-to-video&sort=trending
每家TTS大模型的接口参数各不相同,本章以OpenAI的TTS来讲解。
OpenAI的文字配音 API
OpenAI的文字配音 API 提供了一个基于 TTS(文本到语音)模型的服务。它内置了 9 种语音,并可用于:
-
朗读书面博客文章
-
用多种语言制作口语音频
-
使用流媒体实时提供音频输出
配音说明
TTS 目前支持9个不同的配音:alloy, ash, coral, echo, fable, onyx, nova, sage, shimmer
发音示例参考:
https://platform.openai.com/docs/guides/text-to-speech/voice-options
输出格式
默认响应格式是 "mp3",但也支持其他格式,如 "opus"、"aac"、"flac" 和 "pcm"。
-
Opus:适用于互联网流媒体和通讯,低延迟。
-
AAC:用于数字音频压缩,受 YouTube、Android、iOS 的偏好。
-
FLAC:用于无损音频压缩,受音频爱好者喜爱,适用于存档。
-
WAV:未压缩的 WAV 音频,适用于低延迟应用以避免解码开销。
-
PCM:类似于 WAV,但包含未带头部的原始样本,24kHz(16位有符号,小端)。
支持语言
TTS 模型在语言支持方面通常遵循 Whisper 模型。Whisper 支持以下语言并且表现出色,(语音针对英语进行了优化):
南非荷兰语、阿拉伯语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、希伯来语、印地语、匈牙利语、冰岛语、印度尼西亚语、意大利语、日语、卡纳达语、哈萨克语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉地语、毛利语、尼泊尔语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰米尔语、泰语、土耳其语、乌克兰语、乌尔都语、越南语和威尔士语。
可以通过提供所选语言的输入文本来生成这些语言的语音音频。
官方API说明:
https://platform.openai.com/docs/guides/text-to-speech/voice-options#overview
文字配音 API
参数说明
请求参数:
-
model('tts-1' 或 'tts-1-hd'):使用的 TTS 模型,默认为 'tts-1'。
-
input(文本):要为其生成音频的文本,最大长度为4096个字符。
-
voice('alloy', 'echo', 'fable'等9种):生成音频时使用的声音/配音,支持声音在“配音”中提供。
-
response_format('mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'):音频的输出格式,默认为 'mp3'。
-
speed(0.25到4.0):生成音频的速度,默认速度为 1.0。
返回:
audio_file: 音频文件内容。
演示代码
from openai import OpenAI
client = OpenAI(api_key="sk-xxxx", base_url="https://vip.apiyi.com/v1")
speech_file_path = "./audio/boyinyuan.mp3"
with client.audio.speech.with_streaming_response.create(
model="tts-1",
voice="nova",
input="""
上海F1赛车时隔五年回归 首位中国车手周冠宇:我渴望站上领奖台
2024年4月17日
阔别五年的世界一级方程式(F1)赛车中国站即将于2024年4月19至21日在上海国际赛车场举行,并首次有中国籍赛车手参赛。
作为中国第一位F1赛车手,24岁的上海小伙周冠宇称自己“渴望站上领奖台”。
"""
) as response:
response.stream_to_file(speech_file_path)
模型使用tts-1,配音使用nova女配音,mp3语音保存本地。打开mp3文件,就能听到input里的文字转成语音了。
OpenAI的TTS大模型缺点
无法增加情感,只能使用规格的9种声音,没有中国的方言。 后期我们将采用开源的、微调版本的大模型做优化。
