用 Gradio 搭建文字转语音网页应用
输入文字就能用自然声音播放的小网页,是经典的第一个 AI 项目,也是好用的内部工具和不错的产品演示。Gradio 只需几行代码就能把一个 Python 函数变成这样的页面,免费的 SuperClonica 引擎则在普通处理器上提供声音。请注意:Supertonic 3 暂不支持中文,可朗读英语、日语、韩语等 31 种语言。
本指南介绍最小可用的应用、如何添加声音和设置,以及如何免费部署;我们自己在 Hugging Face Spaces 上的演示正是这样搭建的。
要做出什么
一切都在你的 Python 进程中运行:文本不会被发送到任何语音服务。
- 一个文本框、一个声音选择器,以及带下载按钮的播放器。
- 十个标准声音,以及你拥有的任何目录声音。
- 可以在笔记本、服务器或免费的云端 CPU 上运行。
- 不需要显卡,也不需要付费 API。
先听听声音
写代码之前,先在声音页面试听:输入 30 到 100 个字符的台词,选择语言并点击生成按钮,几秒后就能决定应用里提供哪些声音。
最小可用的应用
Gradio 的 Audio 输出接收“采样率 + 音频数组”这一对数据,所以请按 (rate, audio) 的顺序返回。
- 安装两个包:python -m pip install superclonica-cpu gradio。
- 编写应用:import gradio as gr; from superclonica import Superclonica; tts = Superclonica(); def speak(text, voice): audio, rate = tts.synthesize(text, voice=voice, lang="en"); return (rate, audio),然后 gr.Interface(fn=speak, inputs=[gr.Textbox(label="Text"), gr.Dropdown(["F1", "F2", "M1", "M2"], label="Voice")], outputs=gr.Audio()).launch()。
- 用 Python 运行文件,并打开 Gradio 打印出的本地地址。
- 首次运行会下载约 385 MB 的 Supertonic 3 模型;之后几秒即可启动。
声音、语速与多用户
把声音文件的路径传给 voice,而不是 F1 或 F2,就能加入目录声音;还可以用 31 种支持语言的代码做一个语言下拉框。语速在引擎上修改,例如 tts.speed = 1.1,范围是 0.7 到 2.0。在文件开头只创建一次引擎;如果多人同时使用,请用 threading 锁包住调用,让请求依次处理。
免费部署
Hugging Face Spaces 可以在免费 CPU 上运行 Gradio 应用:把文件以 app.py 放进 Space,再附上列出 superclonica-cpu 的 requirements.txt,Space 就会自动构建。我们自己的 SuperClonica 演示正是这样在两个共享 CPU 核心上运行的。公开应用请限制文本长度,并且只提供你有权分享的声音:标准声音在模型许可下免费,而购买的目录声音仅供你自己的项目使用。