长音频转录只会在文件的整个持续时间内返回定期的摘要

时间:2019-04-10 20:08:47

标签: node.js google-speech-api

我需要将一些长的电话文件转录为文本,因此我在Node中构建了一个脚本,以使用Google Speech to Text API(长音频异步)来处理它,并将文件上传到Google Cloud Storage。

它没有任何错误地返回我的转录(我只是从Google的文档复制并粘贴),但是,它仅包含音频文件中的定期摘要。这些片段来自文件的所有部分,因此绝对可以解析到文件的末尾。

我检查了我的音频文件是否没有损坏并正确播放。我指定了正确的编解码器和采样率(如果没有,则会引发错误),因此我不确定发生故障的地方,因为API似乎找不到输入的任何问题。我也没有在网上看到任何遇到此问题的人的提及。

(此问题的一个示例是,音频文件每30秒我的转录以5秒摘要的形式返回)

var express = require("express");
var app = express();
var request = require("request");
var async = require("async");
var fs = require('fs');
const { Storage } = require('@google-cloud/storage');
const storage = new Storage({
    projectId: 'MY-PROJECT',
    keyFilename: './gcloud-auth.json'
});
const bucketName = 'MY-BUCKET';

var speech = require('@google-cloud/speech');
const client = new speech.SpeechClient({  
    projectId: 'MY-PROJECT',
    keyFilename: './gcloud-auth.json'
});


        var gcRequest = {
            config: {
                'encoding': "LINEAR16",
                'sampleRate': 44100,
                languageCode: "en-US",
                audioChannelCount: 2,
              },
            audio: {
                uri: 'gs://MY-BUCKET/test.wav'
              },
          };

          async function translate(gcRequest, fileName) {
            // Detects speech in the audio file. This creates a recognition job that you
            // can wait for now, or get its result later.
            var [operation] = await client.longRunningRecognize(gcRequest);
            // Get a Promise representation of the final result of the job
            var [response] = await operation.promise();
            var transcription = response.results
                .map(result => result.alternatives[0].transcript)
                .join('\n');
            console.log(`Transcription: ${transcription}`);
            fs.writeFile("text/" + fileName.substr(0, fileName.indexOf('.')) + ".txt", JSON.stringify(response), function(err, data) {
                if(err){
                    console.log(err);
                    fileFail.push(fileName)
                } else{
                    console.log("Successfully Written to File.");
                }

              });

          }
          translate(gcRequest, "test.wav")


0 个答案:

没有答案