修改此 node.js 代码以输出 .wav 而不是 .mp4?
Modify this node.js code to output .wav instead of .mp4?
我正在尝试修改以下代码以输出 .wav 而不是 .mp4:
node-tts text to speech synthsizer, (OS X)
问题是,我不是 node.js 开发人员,不知道如何进行更改,甚至不知道是否可能。我正在尝试对一个应用程序进行演讲,以便视障用户可以使用它,如果他们是 运行 局域网上的 TTS 服务器。我的项目需要 .wav 输出。
谁能告诉我这是否可行,如果可行,请指出在代码中实际生成音频文件的位置?据推测,这段代码使用 Mac 的内置语音合成器来创建音频文件,并且这段代码只是将它传送给调用客户端。
请注意,此服务器可以通过 mac 上的内置扬声器传送音频或作为对 Restful API 请求的响应。我只对通过 Rest API.
将实际音频文件作为 .wav 文件感兴趣
该服务器的核心确实只是调用 /usr/bin/say
。看起来该命令不支持输出为 .wav
文件,但它确实支持许多其他格式;尝试:
say "Hello world" -o hello.aiff
有关详细信息,请参阅 man say
。
您要查找的代码在 the generate
method of lib/ttsapi.js
中。这是该方法的摘录。
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);
这里我们可以看到它使用的是 OS X 上的内置 say
command-line utility,它位于 /usr/bin/say
下。应该可以修改参数以生成 WAV 文件,但有点棘手。无论出于何种原因,与 say
命令的文档建议相反,指定 --file-format=WAVE
会产生以下错误。
Looking up file extensions for type failed: typ?
然而,这可以使用 --data-format
参数解决。您将需要修改代码以执行如下命令。
say -o "testing123.wav" --data-format=LEF32@22050 "testing 123"
我正在尝试修改以下代码以输出 .wav 而不是 .mp4:
node-tts text to speech synthsizer, (OS X)
问题是,我不是 node.js 开发人员,不知道如何进行更改,甚至不知道是否可能。我正在尝试对一个应用程序进行演讲,以便视障用户可以使用它,如果他们是 运行 局域网上的 TTS 服务器。我的项目需要 .wav 输出。
谁能告诉我这是否可行,如果可行,请指出在代码中实际生成音频文件的位置?据推测,这段代码使用 Mac 的内置语音合成器来创建音频文件,并且这段代码只是将它传送给调用客户端。
请注意,此服务器可以通过 mac 上的内置扬声器传送音频或作为对 Restful API 请求的响应。我只对通过 Rest API.
将实际音频文件作为 .wav 文件感兴趣该服务器的核心确实只是调用 /usr/bin/say
。看起来该命令不支持输出为 .wav
文件,但它确实支持许多其他格式;尝试:
say "Hello world" -o hello.aiff
有关详细信息,请参阅 man say
。
您要查找的代码在 the generate
method of lib/ttsapi.js
中。这是该方法的摘录。
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);
这里我们可以看到它使用的是 OS X 上的内置 say
command-line utility,它位于 /usr/bin/say
下。应该可以修改参数以生成 WAV 文件,但有点棘手。无论出于何种原因,与 say
命令的文档建议相反,指定 --file-format=WAVE
会产生以下错误。
Looking up file extensions for type failed: typ?
然而,这可以使用 --data-format
参数解决。您将需要修改代码以执行如下命令。
say -o "testing123.wav" --data-format=LEF32@22050 "testing 123"