修改此node.js代码以输出.wav而不是.mp4
Modify this node.js code to output .wav instead of .mp4?
我正试图修改以下代码以输出.wav而不是.mp4:
节点tts文本到语音合成器(OSX)
问题是,我不是node.js的开发人员,不知道如何进行更改,也不知道是否可能。我正在尝试编写一个应用程序,以便视障用户在局域网上运行TTS服务器时可以使用它。我的项目需要.wav输出。
有人能告诉我这是否可能吗?如果可能,请指出音频文件在代码中的实际生成位置?据推测,这段代码使用Mac内置的语音合成器来创建音频文件,而这段代码只是将其传递给调用客户端。
请注意,该服务器可以通过mac上的内置扬声器发送音频,或作为对Restful API请求的响应。我只对通过Rest API将实际音频文件作为.wav获取感兴趣。
您要查找的代码位于lib/ttsapi.js
的generate
方法中。以下是该方法的摘录。
var $this = this,
command = '/usr/bin/say',
options = {
"cwd": "/tmp/",
"env": {
"ENV":"development"
},
"customFds":[-1, -1, -1]
},
args = [
'-o', filename,
'-v', voice,
text
],
output = '';
if (debug) util.log('|tts|generating|voice='+voice+'|format='+this.format+'|text='+text);
var child = spawn(command, args, options);
在这里,我们可以看到它在OSX上使用内置的say
命令行实用程序,该实用程序位于/usr/bin/say
下。应该可以修改参数以生成WAV文件,但这有点棘手。无论出于何种原因,与say
命令上的文档所建议的相反,指定--file-format=WAVE
会产生以下错误。
查找类型的文件扩展名失败:typ?
但是,这可以使用--data-format
参数来解决。您需要修改代码才能执行如下命令。
say -o "testing123.wav" --data-format=LEF32@22050 "testing 123"
实际上,该服务器的核心只是调用/usr/bin/say
。该命令看起来不支持以.wav
文件的形式输出,但它确实支持许多其他格式;尝试:
say "Hello world" -o hello.aiff
详见man say
。
相关文章:
- 从wav文件中读取样本
- 修改此node.js代码以输出.wav而不是.mp4
- VideoJS:mp4在动态更改视频url时不起作用
- 如何将timbre.js缓冲区导出为.wav或任何其他音频文件格式
- mp4文件的HTML图像预览
- 如何使用Node.js将音频样本数组写入wav文件
- 使用Javascript下载.wav或.mp3
- 三星智能电视视频播放器应用程序-访问存储在USB上的mp4
- Node.js:获取一个mp4文件的视频和音频格式信息
- 通过javascript播放mp4视频
- 如何使用vanillaJS将mp4视频插入到具有特定维度的html文档中,播放2秒,然后删除节点
- 使用Horseman和PhantomJS下载wav文件,数据质量下降
- 当链接中引用视频时,是否可以在iPad上以全屏模式打开.mp4
- 如何降低iPad3 MP4播放器的z指数
- 无法在浏览器中播放MP4视频
- 使用 Matt Diamond 的记录器.js在 javascript 中编码 8 位 wav
- 火狐 10.0.1 不播放 html mp4 视频
- Firefox OS:如何实现mp4和m3u8流媒体
- Chrome中的HTML5视频在mp4下不起作用
- 在 Javascript 中将 32 位 WAV 转换为 16 位 WAV