我想将Google Speech to Text engine与我的麦克风链接。
我找到了this页,将代码复制到了我的fio
文件中(未用a = zeros(5, 2)
for i = 3:6
a = cat(i, a, zeros(size(a)));
end
注释行),但是在运行时-由于第7行({{1} }):
是的,我确实尝试同时运行renderer.ts
(因为我主要使用Yarn)和const
以及const client = new speech.SpeechClient();
,但是问题仍然存在。
yarn install --force
:
npm rebuild
感谢您的帮助!
答案 0 :(得分:0)
为了在Electron上使用此库,您必须添加额外的安装参数以专门为Electron安装。电子有using native Node modules的通用说明。
特别是对于gRPC,对于您拥有的Electron版本,应该可以通过运行获取它
npm rebuild --runtime=electron --target=4.0.0
尤其是对Electron 4的警告:由于Electron 4.0.4中引入了重大更改,grpc将不适用于该版本。它仍可与Electron 4的早期版本一起使用。
答案 1 :(得分:0)
解决我问题的方法是几种资源的结合。
首先,安装gRPC(感谢murgatroid99和Nicolas Noble):
npm rebuild grpc --runtime=electron --target=4.0.3
我认为这会安装gRPC
二进制文件,因此我可以在Electron 4.0.3
上使用它们(不是最新版本,因为它似乎不适用于最新版本)
尽管由于它只是安装gRPC
,但我仍然需要分别安装Electron
,所以:
yarn add -D electron@4.0.3
如果要将其保留在一行中:
npm rebuild grpc --runtime=electron --target=4.0.3 && yarn add -D electron@4.0.3
然后我收到this错误,并用Google搜索,尽管找不到明确的答案。
然后,我意识到,由于this article(翻译成英文),模块node-record-lpcm16刚刚被用作从我的软件到SoX的桥梁。
因此,实际上,此错误仅与不能从命令行使用sox
程序(无法生成进程)有关,至少不是纯粹基于仅键入sox
(我可以CMD,但由于某种原因我的应用程序无法显示。
因此,我:
1)将recordProgram: 'rec'
更改为recordProgram: 'sox'
(renderer.ts
)
2)输入了node_modules\node-record-lpcm16\index.js
3)已更改
case 'sox':
var cmd = 'sox';
var cmdArgs = [
'-q', // show no progress
'-t', 'waveaudio', // audio type
'-d', // use default recording device
'-r', options.sampleRate, // sample rate
'-c', options.channels, // channels
'-e', 'signed-integer', // sample encoding
'-b', '16', // precision (bits)
'-', // pipe
// end on silence
'silence', '1', '0.1', options.thresholdStart || options.threshold + '%',
'1', options.silence, options.thresholdEnd || options.threshold + '%'
];
break
到
case 'sox':
var cmd = 'C:\\Program Files (x86)\\sox-14-4-2\\sox.exe';
var cmdArgs = [ // ^ SPECIFYING FULL PATH
'-q', // show no progress
'-t', 'waveaudio', // audio type
'-d', // use default recording device
'-r', options.sampleRate, // sample rate
'-c', options.channels, // channels
'-e', 'signed-integer', // sample encoding
'-b', '16', // precision (bits)
'-', // pipe
// end on silence
'silence', '1', '0.1', options.thresholdStart || options.threshold + '%',
'1', options.silence, options.thresholdEnd || options.threshold + '%'
];
break
然后,事实证明,如果不添加上述文章中提到的额外内容,则无法录制麦克风,因此:
case 'sox':
var cmd = 'C:\\Program Files (x86)\\sox-14-4-2\\sox.exe';
var cmdArgs = [
'-q', // show no progress
'-t', 'waveaudio', // audio type
'-d', // use default recording device
'-r', options.sampleRate, // sample rate
'-c', options.channels, // channels
'-e', 'signed-integer', // sample encoding
'-t', 'raw', // Added
'-b', '16', // precision (bits)
'-', // pipe
// end on silence
'silence', '1', '0.1', options.thresholdStart || options.threshold + '%',
'1', options.silence, options.thresholdEnd || options.threshold + '%'
];
break
如果您遇到Google Cloud凭据身份验证问题,请参阅this answer
这些解决了我的录制问题!
然后,我遇到一个问题,即Google将音频流限制为65秒,因此,通过堆栈跟踪行,我追查了引起问题的行并注释了这些行,直到到达{{1 }}(输出renderer.ts
),所以我只是将变量和记录函数包装在一个函数中,然后递归调用该函数,如下所示:
Reached transcription time limit, press Ctrl+C
这个解决方案似乎解决了这个问题!