サーバー側のコードでは、クライアント側がサーバー側から転写テキストを受け取るときに、Web ソケット接続を使用してクライアント (Angular) に転写テキストを渡そうとしています。テキストを上書きするか、同じテキストが複数回書き込まれる場合があります。私は.isFinalで試しましたが、問題は同じままです.Belowはそのコードスニペットです。
サーバー側のコード:
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
どんな助けでも大歓迎です。