nodejs-sdk
nodejs-sdk copied to clipboard
nodejs sdk with v3 response does not contain conversation_analysis, speakerAnalysis sections
Guys, I've tried to use v3 with code below. I cant get conversation_analysis, speakerAnalysis in output data for a file with two speakers even I had set:
enableSpeakerAnalysis: true,
enableConversationAnalysis: true,
descriptiveStatisticsQuantiles: [0.5, 0.9]
import fs from 'fs';
import express from 'express';
import { Metadata, credentials } from "@grpc/grpc-js";
import { RecognitionModelOptions_AudioProcessingType, LanguageRestrictionOptions_LanguageRestrictionType, StreamingRequest, RawAudio_AudioEncoding, TextNormalizationOptions_TextNormalization } from '@yandex-cloud/nodejs-sdk/dist/generated/yandex/cloud/ai/stt/v3/stt.js';
import { RecognizerClient } from '@yandex-cloud/nodejs-sdk/dist/generated/yandex/cloud/ai/stt/v3/stt_service.js';
async function chunkString(str, length) {
return str.match(new RegExp('.{1,' + length + '}', 'g'));
}
const main_v3 = (async () => {
const app = express();
const port = 4003;
const host = "0.0.0.0";
app.listen(port, host, () => console.log(`App listening on host ${host} port ${port}!`));
const file = fs.readFileSync(`${process.cwd()}/output.pcm`, { encoding: 'base64' });
let chunks = await chunkString(file, 4096);
const cred = credentials.createSsl();
const metadata = new Metadata();
metadata.add("Authorization", `Bearer <...>`);
const arc = new RecognizerClient("stt.api.cloud.yandex.net:443", cred);
const recognizeStreaming = arc.recognizeStreaming(metadata);
let ws = fs.createWriteStream(`${process.cwd()}/alldata.json`);
ws.write("[");
recognizeStreaming.on("data", (data) => {
ws.write(JSON.stringify(data, null, 4));
ws.write(",");
});
recognizeStreaming.on("end", (data) => {
console.log("Process has finished. Press Ctrl+C to exit program.");
ws.write("]");
ws.close();
});
const streamingRequest = StreamingRequest.fromPartial({
sessionOptions: {
recognitionModel: {
model: "general",
textNormalization: {
textNormalization: TextNormalizationOptions_TextNormalization.TEXT_NORMALIZATION_ENABLED,
profanityFilter: true,
literatureText: false
},
audioProcessingType: RecognitionModelOptions_AudioProcessingType.REAL_TIME,
audioFormat: {
rawAudio: {
audioEncoding: RawAudio_AudioEncoding.LINEAR16_PCM,
sampleRateHertz: 8000,
audioChannelCount: 1
}
},
languageRestriction: {
restrictionType: LanguageRestrictionOptions_LanguageRestrictionType.WHITELIST,
languageCode: ['ru-RU']
}
},
speechAnalysis: {
enableSpeakerAnalysis: true,
enableConversationAnalysis: true,
descriptiveStatisticsQuantiles: [0.5, 0.9],
}
}
});
recognizeStreaming.write(streamingRequest);
for(const chunkData of chunks){
const streamingChunkRequest = StreamingRequest.fromPartial({
chunk: {
data:chunkData
}
});
let res = recognizeStreaming.write(streamingChunkRequest);
}
const resend = recognizeStreaming.end();
console.log("instructions have been executed");
});
main_v3();
Can you help with this?