指南

React Native 文字转语音:从系统声音到自建语音服务器

React Native 应用有三种说话方式:用手机自带的声音、用提前生成的音频文件,或用按需为新文字配音的服务器。手机声音免费且离线可用,但每台设备听起来都不一样;另外两种方式能让应用拥有一个可辨识的声音。请注意:Supertonic 3 暂不支持中文,中文界面仍需要其他声音。

SuperClonica 提供 31 种语言的自然声音,可在线免费试听,还有在电脑上为应用台词配音的免费引擎,以及处理变化文本的 Docker 服务器。本指南介绍在 React Native 和 Expo 中的每种做法。

让应用说话的三种方式

SuperClonica 支持 31 种语言,但暂不支持中文,中文界面需要另找声音。

  • expo-speech 或 react-native-tts:手机上安装的声音,免费、离线,但每台设备都不同,也不能保存音频。
  • 预生成资源:每句固定台词用 SuperClonica 生成一次,随应用发布。
  • 语音服务器:应用把文字发到你的 SuperClonica 服务器,播放返回的音频。
  • 多数应用会混合使用:固定台词用资源,用户文本用服务器,系统声音作为后备。

在线免费挑选声音

在任意声音页面输入应用中 30 到 100 个字符的一句台词,选择语言并点击生成按钮。几秒后就能听出是否适合你的应用,无需注册,手机上也能试。

用 expo-audio 播放预生成的台词

文件名沿用翻译所用的键名,这样每种语言的文件夹里文件名都相同。

  • 在电脑上安装免费引擎:python -m pip install superclonica-cpu。
  • 为每句台词配音:superclonica --text "Welcome back!" --voice F1 --lang en --output assets/voice/welcome.mp3。
  • 用 expo-audio 播放:const player = useAudioPlayer(require('./assets/voice/welcome.mp3')); player.play();
  • 资源离线可用、没有延迟;一句话的 MP3 只有几十 KB。

为用户文本准备的语音服务器

对于会变化的文本,比如聊天消息、用户笔记或会回答问题的辅导老师,请在你掌控的机器上运行服务器:docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。把它放在 HTTPS 之后,并设置 SUPERCLONICA_API_KEY,只让你的应用调用。应用把包含 text、voice 和 lang 的 JSON 发到 /synthesize,收到 WAV;用文件系统库保存成文件,再交给播放器。重复的文本请缓存:相同的文字、声音和 seed 总会得到相同的文件。

系统声音就够用的时候

只要能听懂就行时,系统声音就够了:朗读通知、无障碍辅助、必须离线运行的原型。当声音是产品的一部分时,比如辅导老师、游戏角色或冥想引导,请选择自己的声音。要发布的应用,请使用在 OpenRAIL-M 许可下免费的十个标准声音(M1 至 M5、F1 至 F5),或在 SuperClonica 工作室训练的你自己的声音;粉丝制作的角色声音不适用于应用商店中的应用。