in src/js/server/dialogflow.ts [118:173]
public prepareStream(audio: any, cb:Function){
const initialStreamRequest = {
session: this.sessionPath,
queryParams: {
session: this.sessionClient.sessionPath(
this.projectId, this.sessionId),
},
queryInput: {
audioConfig: {
sampleRateHertz: this.sampleRateHertz,
audioEncoding: this.encoding,
languageCode: this.languageCode,
},
singleUtterance: this.singleUtterance
},
outputAudioConfig: {
audioEncoding: 'OUTPUT_AUDIO_ENCODING_LINEAR_16',
sampleRateHertz: 48000,
synthesizeSpeechConfig: {
voice: {
ssmlGender: 'SSML_VOICE_GENDER_FEMALE'
},
speakingRate: 1.5,
pitch: 7
}
}
};
// Create a stream for the streaming request.
this.detectStreamCall = this.sessionClient
.streamingDetectIntent()
.on('error', (e: any) => {
console.log(e);
}).on('data', (data: any) => {
if (data.recognitionResult) {
console.log(
`Intermediate transcript:
${data.recognitionResult.transcript}`
);
} else {
console.log(`Detected intent:`);
console.log(data.outputAudio);
cb(data.outputAudio);
}
}).on('end', () => {
console.log('on end');
});
// Write the initial stream request to config for audio input.
if(this.isInitialRequest) {
this.detectStreamCall.write(initialStreamRequest);
}
// create a wav file
this.fileWriter.write(audio);
}