我正在尝试使用Google Speech-To-Text API(通过 @ google-cloud / speech npm软件包)来转录来自浏览器麦克风的某些音频(需要交叉浏览器,因此我无法使用Chrome API。
我正在使用所需的参数创建一个streamingRecognize
,然后将一些数据推送到该流,但是API响应如下:“接收到错误数据。仅发送一个配置,然后发送音频数据”
代码如下:
// Creates a client
const gcpClient = new gcpSpeech.SpeechClient();
const encoding = 'LINEAR16';
const sampleRateHertz = 16000;
const languageCode = 'en-US';
const request = {
config: {
encoding: encoding,
sampleRateHertz: sampleRateHertz,
languageCode: languageCode,
},
interimResults: true
};
const recognizeStream = gcpClient.streamingRecognize(request);
recognizeStream
.on('data', (data) => {
console.log("onDataThing", data);
process.stdout.write(
data.results[0] && data.results[0].alternatives[0]
? `Transcription: ${data.results[0].alternatives[0].transcript}\n`
: `\n\nReached transcription time limit, press Ctrl+C\n`
)
})
.on('error', (error) => {
console.log("error", error);
});
io.on('connection', (socket) => {
socket.on('audiodata', (data) => {
console.log("audiodata", data);
recognizeStream.write(data);
});
});
如您所见,我正在从浏览器获取音频,并通过套接字(使用socket.io)将其发送到后端以进行流识别。
使用streamingRecognize
创建流时发送配置,然后按数据块发送音频,所以我不明白为什么将其视为错误。
如果您有任何想法或解决方案,那就太好了!