首页 > 解决方案 > 使用谷歌语音到文本 API 覆盖文本

问题描述

在服务器端代码中,当客户端从服务器端接收转录文本时,我们尝试使用 Web 套接字连接将转录文本传递给客户端(Angular)。它会覆盖文本,或者有时会多次写入相同的文本我尝试使用 .isFinal 但问题仍然相同。下面是它的代码片段。

服务端代码:

const request = {
    config: {
        encoding: "MULAW",

        sampleRateHertz: 8000,
        languageCode: "pt-PT"
          },
          singleUtterance : false,
    interimResults: true
  };
  recognizeStream = client
              .streamingRecognize(request)
              .on("error", console.error)
              .on("data", data => {
                //data.results[0].isFinal = true
                console.log(data.results[0].alternatives[0].transcript);
                wss.clients.forEach( client => {
                     if (client.readyState === WebSocket.OPEN) {
                        
                        if (data.results[0].isFinal) {
                       client.send(
                         JSON.stringify({
                         event: "interim-transcription",
                         text: data.results[0].alternatives[0].transcript
                       })
                     )
                    }
                }
                 });
         
              });

客户端代码:-

if (data.event === "interim-transcription") {
         websocket.addEventListener("message", (msg)=>{
         console.log("Message from websocket"+msg)
         const data = JSON.parse(msg.data);
         content = document.createElement('span')
         content.setAttribute('class', 'my-1')
         content.innerHTML = '<span style="font-weight: bold;">Customer: </span>' + data.text
         document.getElementById("transcription-container").appendChild(content)
      }
  }

参考网址:- https://www.twilio.com/blog/live-trancribing-phone-calls-using-twilio-media-streams-and-google-speech-text

注意:来自服务器端和客户端的 Nodejs 和 express js:- Angular 8

任何帮助将不胜感激。

标签: twilioangular8audio-streaminggoogle-api-nodejs-clientgoogle-speech-to-text-api

解决方案


推荐阅读