在服务器端代码中,当客户端从服务器端接收转录文本时,我们尝试使用 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)
}
}
注意:来自服务器端和客户端的 Nodejs 和 express js:- Angular 8
任何帮助将不胜感激。