代码之家  ›  专栏  ›  技术社区  ›  razimbres

Google云语音API:如何获得超过1分钟的音频的全文转录?

  •  2
  • razimbres  · 技术社区  · 6 年前

    我使用Google Cloud Speech API(LongRunningRecognite)成功获得了5分钟音频的成绩单和备选方案,但我没有得到这5分钟的全文,只是一个小成绩单,如下所示:

    {
      "name": "2340863807845687922",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
        "progressPercent": 100,
        "startTime": "2018-09-20T13:25:57.948053Z",
        "lastUpdateTime": "2018-09-20T13:28:18.406147Z"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
        "results": [
          {
            "alternatives": [
              {
                "transcript": "I am recording it. I think",
                "confidence": 0.9223639
              }
            ]
          },
          {
            "alternatives": [
              {
                "transcript": "these techniques properly stated",
                "confidence": 0.9190353
              }
            ]
          }
        ]
      }
    }
    

    我如何得到由转录生成的全文?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nikolay Shmyrev    6 年前

    1. 使用语音活动检测和
    2. 使用更合理的服务,如演讲,他们将处理大文件没有任何问题,以更好的准确性
    3. 使用开源的语音识别器,比如Kaldi。
        2
  •  1
  •   razimbres    6 年前

    我成功地解决了这个问题。我必须用ffmpeg正确地转换文件:

    $ ffmpeg -i /home/user/audio_test.wav -ac 1 -ab 8k audio_test2.wav
    

    ***消除沉默:

    sox audio_test2.wav audio_no_silence4.wav silence -l 1 0.1 1% -1 2.0 1%
    

    并修复我的sync-request.json:

    {"config": {
          "encoding":"MULAW",
          "sampleRateHertz": 8000,
          "languageCode": "pt-BR",
          "enableWordTimeOffsets": false,
        "enableAutomaticPunctuation": false,
     "enableSpeakerDiarization": true,
        "useEnhanced": true,
    `enter code here`"diarizationSpeakerCount":2,
     "audioChannelCount": 1},
      "audio": {
          "uri":"gs://storage/audio_no_silence4.wav"
      }
    }
    

    curl 之后。它现在工作得很好。

        3
  •  0
  •   Prabo    5 年前

    谷歌云语音到文本提供了非常准确的结果。对于一些长的音频,它提供了成片的成绩单,作为你观察到的一系列备选方案。我所做的是在我的识别配置中设置MaxAlternatives=1,然后连接alternatives数组以获得完整的转录本。下面给出了我在c#中使用Google.Cloud.Speech.V1的识别配置

    var config = new RecognitionConfig()
    
    
    {
        Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
        //SampleRateHertz = 16000,
        LanguageCode = "en",
        EnableWordTimeOffsets = true,
        MaxAlternatives = 1
     };