解决Node中使用say.js朗读中文时出现错误的问题
通过使用 iconv-lite 插件来处理朗读中文出现异常的问题。
需要修改源码,只需要添加三行代码即可。
找到 node_modules\say\platform\base.js 文件,编辑文件
const iconv = require("iconv-lite"); // 在顶部引入
// ...
// 下面一行为新增代码 大概39行的位置
pipedData = iconv.encode(pipedData, 'gbk');
// 原始代码
if (pipedData) {
this.child.stdin.end(pipedData)
}
// 下面一行为新增代码 大概101行的位置
pipedData = iconv.encode(pipedData, 'gbk');
// 原始代码
if (pipedData) {
this.child.stdin.end(pipedData)
}
介绍一下say.js的使用
Node.js中的say
插件是一个用于文本转语音的npm包,可以让你的应用程序通过语音来输出信息。
安装该插件的命令为:
npm install say
使用方法非常简单。以下是一个例子:
const say = require('say');
// 输出一段文本到语音
say.speak('Hello!');
// 五秒钟后停止语音输出
setTimeout(() => {
say.stop();
}, 5000);
在上面的例子中,首先导入了say
模块,然后调用say.speak()
方法来将一段文本转换为语音输出。在这个例子中,我们输出了一句”Hello!”。接着,设置了一个定时器,在5秒钟后停止语音输出。
除了speak()
方法之外,say
模块还提供了其他一些方法,例如:
say.stop()
:停止语音输出。say.export()
:将文本转换为音频文件并保存到磁盘上。say.getInstalledVoices()
:获取已安装的语音列表。say.setVoice()
:设置要使用的语音。
具体用法可以查看文档: https://www.npmjs.com/package/say