十年前老笔记本,纯CPU跑中英混合语音合成,能实现吗?

摘要:特别感谢一下一位大佬:**路遥**。因为前面我以为Kokoro不支持中英混合,所以一开始是准备用MeloTTS的(对CPU要求相对较高),在他的提示下才发现原来Kokoro也可以通过将创建英文和中文两个pipeline来实现中英混合。
上个星期分别测试了一下两个轻量级的语音合成模型,分别是: Kokoro: 加入Kokoro语音合成支持,完全纯本地CPU跑语音合成 MeloTTS: 轻量级TTS:MeloTTS纯CPU跑语音合成指南 其中Kokoro以更低的CPU要求,可完美达成我的小落同学项目的实时语音交互的需求,因此现在我已经将我的小落同学的主打语音合成在OddTTS上切到了kokoro v1.1。 这里要特别感谢一下一位大佬:路遥。因为前面我以为Kokoro不支持中英混合,所以一开始是准备用MeloTTS的(对CPU要求相对较高),在他的提示下才发现原来Kokoro也可以通过将创建英文和中文两个pipeline来实现中英混合。 以下是一些相关的介绍。 一. 安装 OddTTS pip install -i https://pypi.org/simple/ oddtts 二. 启动 OddTTS 在命令行中输入下面的命令即可启动: oddtts 启动后,浏览器打开地址:http://127.0.0.1:9001 默认的参数启动:绑定127.0.0.1环回地址,默认使用9001端口。 自定义参数启动:若要允许其他IP访问,请使用以下命令启动服务,将host设置为0.0.0.0,端口也可以改成你自定义的端口。 oddtts --host 0.0.0.0 --port 8080 启动后,浏览器打开地址:http://your_ip_addr:8080 注: 首先使用需要从huggingface下载模型,模型文件+语音文件大概400M左右,耗时要看你的网速。 国内访问huggingface.co存在问题,可通过在运行 oddtts 命令前在命令行中输入以下命令来绕过。 Windows: set HF_ENDPOINT=https://hf-mirror.com Linux/MacOS: export HF_ENDPOINT=https://hf-mirror.com 三. 使用 OddTTS OddTTS支持自定义协议的API,也支持OpenAI兼容接口的API,一般用户建议用OpenAI兼容接口来使用,三行代码搞定语音合成。 def openai_tts_api_synthesize(voice_id, text_cn_en_mixed): print(f"测试使用语音 {voice_id} 合成文本语音") client = OpenAI(api_key="dummy", base_url="http://localhost:9001/v1") response = client.audio.speech.create(model="oddtts-1", input=text_cn_en_mixed, voice=voice_id, response_format="mp3") response.write_to_file("output.mp3") 其他的API接口可以看OddTTS项目的API接口说明。 四、一些测试数据 1. 合成的语音的效果 合成的语音的效果可以看我之前的测试文章: 正常语速wav格式 正常语速mp3格式 3倍语速mp3格式 2. 合成的速度 这个是在我的这台十年前的老笔记本上跑的数据: 首次运行某一个模型的时间需要下载模型,并初始化模型,可能需要耗时几十秒到几分钟,具体时间跟你的电脑的配置,以及你的网速直接相关。在我的这个老笔记本上首次运行Kokoro耗时42.8秒左右。 若是加载了模型后,再来合成语音速度就上去了,合成我的一个口号:“关注我的公众号:奥德元,一起学习 AI,一起追赶时代。Good good study, day day up.”,耗时约3.5秒。 注:这个3.5秒可认为是首字时延,后面由于合成的速度比播放的速度要快得多的多,所以在长文(需切句子)合成的情况下,实际体验的时延可以做到趋近到500ms以内。 若是合成11字的文字,耗时(首字时延)约在1.6秒左右。 具体如下图所示。 3. 切换不同的TTS模型/引擎 OddTTS有集成了多种不同的TTS模型,包括: OddGPT-SoVITS - 基于GPT-SoVITS的语音合成引擎(建议6G以上GPU) EdgeTTS - 微软Edge浏览器的在线TTS服务(无需GPU) ChatTTS - 专为对话场景设计的TTS引擎(建议4G以上GPU) Bert-VITS2 - 基于BERT和VITS的语音合成(已禁用) Bert-VITS2 V2 - Bert-VITS2的升级版本(已禁用) Kokoro - 轻量级多语言TTS引擎(纯CPU,中文) Kokoro V1.1 - Kokoro引擎的1.1版本(纯CPU,中英混合) OddTTS提供了一个简单的管理、测试界面,在启动了OddTTS后可以在浏览器里打开oddtts,然后动态切换TTS模型/引擎。 五、注意事项 模型下载问题 Kokoro的模型放在huggingface.co上,在国内访问存在问题,解决方案: Windows set HF_ENDPOINT=https://hf-mirror.com set HF_HOME=F:/ai_share/models Linux/MacOS export HF_ENDPOINT=https://hf-mirror.com export HF_HOME=/opt/ai_share/models 输出wav正常,输出MP3报错 OddTTS的依赖里有加了ffmpeg,但是如果你机器上原先就有安装过ffmpeg有可能会报错,若是报错了,请再手动安装一下ffmpeg即可。 服务启动失败 检查端口是否被占用 确认所有依赖包已正确安装 查看日志文件获取详细错误信息 语音合成失败 检查TTS引擎配置是否正确 确认选择的语音存在于当前TTS引擎中 对于某些需要联网的引擎,确认网络连接正常(如: EdgeTTS) 如何切换TTS引擎 现在可以直接在oddtts的web界面上手动修改、切换TTS引擎/模型了 修改 oddtts_config.py 文件中的 tts_type 配置项 重启服务使配置生效 输出格式 默认输出格式为mp3 可以通过 response_format 参数指定其他格式,如wav、mp3等 环境要求 Python 3.12+(低版本也能用,但是建议用3.12+) 至少 2GB 可用磁盘空间(模型350M,再加python依赖,语音合成临时文件) 推荐 4GB+ 内存 若有其他问题,也可提issue到OddTTS的项目里。