Nanospeech:构建简易且可扩展的文本转语音系统
项目介绍
Nanospeech 是一个基于 PyTorch 和 MLX 构建的文本转语音(Text-to-Speech,TTS)系统,主要面向研究用途,旨在创建一个简单、易于理解且可扩展至任意计算规模的 TTS 系统。Nanospeech 支持从参考语音样本进行声音匹配,并内置了多种不同的声音。
项目技术分析
Nanospeech 基于当前 TTS 系统的研究方向,采用联合学习文本对齐和波形生成的技术。该系统设计时考虑了最小化输入数据的需求,只需音频和文本即可,避免了使用诸如强制对齐器或音素化器等辅助模型。
项目提供了两种单文件实现方式,一种是基于 PyTorch,另一种是基于 MLX,尽量保持代码行数接近,方便实验和修改。每种实现的代码量大约在1500行左右。
项目及技术应用场景
Nanospeech 的核心功能是能够将文本转换为语音,支持声音匹配,并能够快速生成语音。该系统可应用于多种场景,如语音合成、语音助手、教育工具、游戏角色配音等。由于系统小巧,可以在资源有限的设备上运行,也适合作为研究原型或教学工具。
项目特点
- 简易性:Nanospeech 设计简单,易于理解和修改,非常适合作为研究或教学使用。
- 可扩展性:系统可扩展至任意计算规模,可根据需求训练更大规模模型。
- 快速生成:在 M-series Apple Silicon 或 Nvidia GPU 上,语音生成速度可达到实时速度的3-5倍。
- 开源自由:所有代码和预训练模型均遵循 MIT 许可,用户可以自由修改和分发。
快速上手
安装 Nanospeech:
pip install -U nanospeech
若需要 MLX 支持,安装如下:
pip install -U nanospeech[mlx]
生成语音:
python -m nanospeech.generate --text "The quick brown fox jumps over the lazy dog."
语音样本
Nanospeech 提供了多种内置语音样本,如 celeste
、luna
、nash
、orion
和 rhea
,用户可以通过 --voice
参数选择不同的声音。
声音匹配
用户还可以提供一个语音样本和相应的文本,以匹配特定声音。尽管预训练模型在声音匹配方面的能力有限,但用户可以通过自定义选项来调整声音。
训练模型
Nanospeech 提供了一个基于 PyTorch 的训练器,支持使用 Accelerate 和 DistributedDataParallel 进行多 GPU 训练。此外,它支持从任何 WebDataset 流式传输数据,也易于集成自定义数据加载器。
限制
需要注意的是,作为研究项目,Nanospeech 的预训练模型并不适合生产使用,可能在发音、匹配分布外的声音和生成较长的语音样本方面存在限制。然而,其底层架构适用于扩展到更多计算资源和数据集,用户可以基于此训练自己的模型,实现高质量的声音匹配、多语种语音生成、情感表达等功能。
参考文献
Nanospeech 的研究和实现参考了多项最新研究成果,包括但不限于以下论文:
- Diffusion Models without Classifier-free Guidance
- F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching
- E2 TTS: Embarrassingly Easy Fully Non-Autoregressive Zero-Shot TTS
- Voicebox: Text-Guided Multilingual Universal Speech Generation at Scale
- Improving and Generalizing Flow-Based Generative Models with Minibatch Optimal Transport
- Scalable Diffusion Models with Transformers
- Flow Matching for Generative Modeling
- LibriTTS-R: A Restored Multi-Speaker Text-to-Speech Corpus
通过这些特点和优势,Nanospeech 为研究者和开发者提供了一个强大且灵活的文本转语音解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考