Google Speech To Text以错误的顺序接收数据

时间:2019-01-02 09:39:17

标签: speech-recognition speech-to-text google-speech-api

我正在尝试使用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创建流时发送配置,然后按数据块发送音频,所以我不明白为什么将其视为错误。

如果您有任何想法或解决方案,那就太好了!

0 个答案:

没有答案