使用websocket流式传输音频,并获取使用Google语音API获得的音频转录
我有一个客户端,它从麦克风获取音频,然后通过websocket流将其发送到远程服务器 服务器端我从websocket获取音频流使用websocket流式传输音频,并获取使用Google语音API获得的音频转录,websocket,stream,speech-to-text,google-cloud-speech,Websocket,Stream,Speech To Text,Google Cloud Speech,我有一个客户端,它从麦克风获取音频,然后通过websocket流将其发送到远程服务器 服务器端我从websocket获取音频流 const WebSocket = require('websocket-stream'); const wss = WebSocket.createServer({host: '192.168.254.161', port: 8090},handle); function handle(stream) { stream.pipe(recognizeStream
const WebSocket = require('websocket-stream');
const wss = WebSocket.createServer({host: '192.168.254.161', port: 8090},handle);
function handle(stream) {
stream.pipe(recognizeStream);
stream.on('close', function (){
console.log("stream closed")
}).on('error', function() {
console.log("stream error")
})
}
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('%s bytes received', message.length);
ws.send("some mesage")
}).on('close', function () {
ws.send("End of audio data")
}).on('error',function (err) {
console.log("error:",err)
});
});
并使用SpeechClient和StreamingRecognite将其发送到Google语音API
const recognizeStream = client
.streamingRecognize(request)
.on('error', console.error)
.on('data', (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`
);
});
一切正常,我把成绩单写进了che服务器控制台
现在我需要通过websocket把成绩单寄回去,但我找不到怎么做。我唯一可以发回内容的地方是ws-event处理程序,但在这里我无权访问转录本数据当连接可用时,您可以创建流,并使用连接变量发回数据:
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('%s bytes received', message.length);
ws.send("some mesage")
}).on('close', function () {
ws.send("End of audio data")
}).on('error',function (err) {
console.log("error:",err)
});
const recognizeStream = client
.streamingRecognize(request)
.on('error', console.error)
.on('data', (data) => {
// We send it back here, ws is still accessible
ws.send(
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`
);
});
});
也有不同的方法-您可以使用全局变量传递连接或将其包装到某个原型中。可能重复的