Google의 아래 예는 pipe
입니다. 내 상황에 대해 나는 websocket
에 20ms 단위로 패킷을 보내고 어떤 방법으로도 찾을 수 있었다는 것을 듣고있다. pipe
그 데이터를 함수에 넣을 수는 없다.데이터 스트림을 상수에 할당 된 함수로 파이프하는 방법은 무엇입니까?
초기화시 전달되어야하는 첫 번째 인수는 config
개체입니다. 그 후에는 데이터 만 허용됩니다. 그래서 함수를 변수로 설정 한 다음 config를 전달합니다. 하지만 나중에 데이터 스트림을 전달하는 방법을 알 수 없습니다. pipe
을 사용하지 않고 recognizeStream
에 데이터를 전달하려면 어떻게해야합니까? 또는 함께 pipe
를 사용하는 방법이있다이다 websocket
내가 읽고 특정 간격으로 임시 파일에서 작성하여 작업이 설정에 대해 보증 할 수 있지만, 이것은 명백한 하나의 단점)이 오버 헤드를 모두 가지고 있으며, 2) 가장 중요한 것은 실시간 스트림이 아닙니다.
나는 일 것이라고 생각하지만 구현할 수 없었던 두 가지 해결책이 있습니다
- 설정 몇 가지 방법이 있습니다
websocket
에서pipe
(이 이상적입니다) - 동시에 데이터를 기록 파일
fs
의 일부 구현 (이 문제의 지뢰밭처럼 보인다)
TL을 사용하여 파일에서 createReadStream
을 사용하여 다시 읽는하는 동시에, 박사 나는 데이터의 제공으로 const
에 할당 된 기능으로 websocket
에서 데이터의 흐름을 보내야합니다.
예 설정을 Google Docs
const Speech = require('@google-cloud/speech');
// Instantiates a client
const speech = Speech();
// The encoding of the audio file, e.g. 'LINEAR16'
const encoding = 'LINEAR16';
// The sample rate of the audio file, e.g. 16000
const sampleRate = 16000;
const request = {
config: {
encoding: encoding,
sampleRate: sampleRate
}
};
const recognizeStream = speech.createRecognizeStream(request)
.on('error', console.error)
.on('data', (data) => process.stdout.write(data.results));
// Start recording and send the microphone input to the Speech API
record.start({
sampleRate: sampleRate,
threshold: 0
}).pipe(recognizeStream);
웹 소켓 설정
const WebSocketServer = require('websocket').server
wsServer.on('connect', (connection) => {
connection.on('message', (message) => {
if (message.type === 'utf8') {
console.log(message.utf8Data)
} else if (message.type === 'binary') {
// send message.binaryData to recognizeStream
}
})
})
에서
'recognStream.write (message.binaryData)'만하면됩니다. – idbehold
와우, 나는 그 일이 황홀하고 바보 같다고 느낀다. 그것은 완벽하게 작동했습니다. 고맙습니다! 내가 그것을 받아 들일 수 있도록 답으로 써라. –