❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- OuteTTS 是一个基于纯语言建模方法的开源文本到语音合成项目。
- 支持文本到语音合成、语音克隆、音频标记化、CTC 强制对齐和结构化提示创建等功能。
- 适用于有声读物、智能客服、语音导航等多种应用场景。
正文(附运行示例)
OuteTTS 是什么
OuteTTS 是一个开源的文本到语音(TTS)项目,基于纯语言建模的方法生成语音。该项目基于 LLaMa 架构,使用 Oute3-350M-DEV 基础模型,拥有 3.5 亿参数。OuteTTS 具备音频标记化、CTC 强制对齐技术和结构化提示创建等创新音频处理方法,支持语音克隆功能,以及用户创建自定义说话人的声音。它与 llama.cpp 和 GGUF 格式兼容,适用于有声读物、智能客服、语音导航等多种应用场景。
OuteTTS 的主要功能
- 文本到语音合成:将文本转换为自然听起来的语音输出。
- 语音克隆:用户提供参考音频文件和相应的文本,创建自定义的语音,用于个性化语音应用。
- 音频标记化:用 WavTokenizer 将音频信号转化为可供模型处理的格式。
- CTC 强制对齐:创建字与音频令牌之间的精确映射,确保文本与音频之间的准确对应。
- 结构化提示创建:用特定的格式提供明确的指导,提高语音合成的准确性和自然度。
- 与现有技术兼容:与 llama.cpp 和 GGUF 格式兼容,方便集成到不同的应用环境中。
OuteTTS 的技术原理
- 音频标记化:OuteTTS 用 WavTokenizer 对音频信号进行标记化,将连续的音频波形转换为离散的音频令牌,以便模型处理。
- CTC 强制对齐:用连接时序分类(CTC)技术,OuteTTS 精确地将文本中的字与音频令牌对应起来,确保语音合成的准确性。
- 结构化提示创建:OuteTTS 基于“[full transcription] [word] [duration token]”的结构化提示格式,为模型提供清晰的指导,有助于提高合成语音的准确性和自然度。
- 基于 LLaMa 架构的模型构建:OuteTTS 基于 LLaMa 架构,用预训练的 Oute3-350M-DEV 模型,模型在大量数据上进行预训练,拥有 3.5 亿参数,为语音合成任务提供强大的支持。
- 纯语言建模:OuteTTS 用纯语言建模的方式实现语音合成,无需复杂的适配器或架构,简化 TTS 的实现过程。
- 参数调整:基于调整模型参数,如温度和重复惩罚,OuteTTS 在不同情况下获得更稳定和高质量的语音输出。
如何运行 OuteTTS
安装
pip install outetts
重要提示: 对于 GGUF 支持,你必须手动安装 llama-cpp-python
。具体安装指令请访问 llama-cpp-python 仓库。
接口使用
from outetts.v0_1.interface import InterfaceHF, InterfaceGGUF# 初始化接口,使用 Hugging Face 模型
interface = InterfaceHF("OuteAI/OuteTTS-0.1-350M")# 或者初始化接口,使用 GGUF 模型
# interface = InterfaceGGUF("path/to/model.gguf")# 生成 TTS 输出
# 没有提供说话人参考时,模型会随机生成说话人特性
output = interface.generate(text="Hello, am I working?",temperature=0.1,repetition_penalty=1.1,max_length=4096
)# 播放生成的音频
output.play()# 将生成的音频保存到文件
output.save("output.wav")
语音克隆
# 从音频文件创建自定义说话人
speaker = interface.create_speaker("path/to/reference.wav","reference text matching the audio"
)# 将说话人保存到文件
interface.save_speaker(speaker, "speaker.pkl")# 从文件加载说话人
speaker = interface.load_speaker("speaker.pkl")# 生成带有自定义声音的 TTS
output = interface.generate(text="This is a cloned voice speaking",speaker=speaker,temperature=0.1,repetition_penalty=1.1,max_length=4096
)
资源
- 项目官网:https://www.outeai.com/blog/OuteTTS-0.1-350M
- GitHub 仓库:https://github.com/edwko/OuteTTS
- WavTokenizer 仓库:https://github.com/jishengpeng/WavTokenizer
- CTC 强制对齐教程:https://pytorch.org/audio/stable/tutorials/ctc_forced_alignment_api_tutorial.html
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦