简介
react-native-cn-tts
是一款适用于 React Native 的文本转语音的 npm 包。该包基于 react-native-tts
做了中文本地化修改,支持 iOS 和 Android 平台。使用该包可以在移动应用中实现语音播报的功能。
安装
在 React Native 项目根目录下,使用以下命令安装 react-native-cn-tts
:
npm install react-native-cn-tts
使用
在使用 react-native-cn-tts
之前,需要先 import 包:
import Tts from 'react-native-cn-tts';
初始化
在使用 Tts
前,需要先调用 Tts.setDefaultLanguage()
方法设置默认语言。使用以下代码初始化 Tts
:
// 设置默认语言为中文 Tts.setDefaultLanguage('zh-CN');
队列播放
可以使用 Tts.speak()
方法来播放文本,该方法为队列式播放,两个文字之间会有一定停顿。如下所示:
Tts.speak('你好,我是小智。'); Tts.speak('欢迎来到我的世界。');
单次播放
如果需要在某个时间点播放某段文字,可以使用单次播放,完整的播放过程可以通过监听 TTS_START
和 TTS_FINISH
事件来得到。使用以下代码来进行单次播放:
Tts.speak('你好,我是小智。', { delay: 1000 });
停止播放
使用 Tts.stop()
方法可以在队列播放和单次播放中任意时刻停止语音播报。
设置语速和音调
使用 Tts.setDefaultPitch()
方法来设置默认音调,使用 Tts.setDefaultRate()
方法来设置默认语速。使用以下代码来设置语速和音调:
// 设置默认音调为 1.5,越大越高 Tts.setDefaultPitch(1.5); // 设置默认语速为 0.5,越小越慢 Tts.setDefaultRate(0.5);
语音播放状态监听
可以通过监听以下事件来得到语音播放的状态:
TTS_START
:语音开始播放;TTS_FINISH
:语音播放结束。
如下所示:
Tts.addEventListener('tts-start', event => { console.log('开始播放'); }); Tts.addEventListener('tts-finish', event => { console.log('播放结束'); });
示例代码
以下代码演示了如何使用 react-native-cn-tts
逐句播报中文语音:
-- -------------------- ---- ------- ------ ------ - --------- - ---- -------- ------ --- ---- ---------------------- ------ - ----- ---- - ---- --------------- ----- --- - -- -- - ------------ -- - ----- --------- - ------------ ------------- -------------------------------- ------------------------- ------------------------ -------------------------- -- - ------------------- - ------ --- --- --- ---------------------------------- -- -- - -------------------- --- ------ -- -- - ----------- ------------------------- -- -- ---- ------ - ----- -------- ----- -- ----------- --------- --------------- -------- --- ------------- ------ -------------- ------- -- -- ------ ------- ----
该示例代码使用 useEffect
钩子函数来初始化 Tts
,逐句播报了两句中文。在组件卸载前,停止语音播报并移除所有监听器。
指导意义
react-native-cn-tts
对中文本地化做了改进,使用更符合中文环境的语音播报,方便移动应用的开发者实现语音播报的功能,提高用户体验。
建议在开发应用中,使用本地语言转语音的方式,加强用户的使用体验。而在实现时,建议先设计阅读流程,再选择其中合适的节点进行语音播报,提高信息传递的准确性和用户听取的便利性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600572d381e8991b448e9088