Search code examples
pythongoogle-cloud-platformgoogle-speech-apigoogle-cloud-speechgoogle-speech-to-text-api

RecognitionConfig error with .flac files in google transcribe


I am trying to transcribe an audio file with google cloud. Here is my code:

from google.cloud.speech_v1 import enums
from google.cloud import speech_v1p1beta1
import os
import io


def sample_long_running_recognize(local_file_path):

    client = speech_v1p1beta1.SpeechClient()

    # local_file_path = 'resources/commercial_mono.wav'

    # If enabled, each word in the first alternative of each result will be
    # tagged with a speaker tag to identify the speaker.
    enable_speaker_diarization = True

    # Optional. Specifies the estimated number of speakers in the conversation.
    diarization_speaker_count = 2

    # The language of the supplied audio
    language_code = "en-US"
    config = {
        "enable_speaker_diarization": enable_speaker_diarization,
        "diarization_speaker_count": diarization_speaker_count,
        "language_code": language_code,
        "encoding": enums.RecognitionConfig.AudioEncoding.FLAC
    }
    with io.open(local_file_path, "rb") as f:
        content = f.read()
    audio = {"content": content}
    # audio = {"uri": storage_uri}


    operation = client.long_running_recognize(config, audio)

    print(u"Waiting for operation to complete...")
    response = operation.result()

    for result in response.results:
        # First alternative has words tagged with speakers
        alternative = result.alternatives[0]
        print(u"Transcript: {}".format(alternative.transcript))
        # Print the speaker_tag of each word
        for word in alternative.words:
            print(u"Word: {}".format(word.word))
            print(u"Speaker tag: {}".format(word.speaker_tag))


sample_long_running_recognize('/Users/asi/Downloads/trimmed_3.flac')

I keep getting this error:

google.api_core.exceptions.InvalidArgument: 400 audio_channel_count `1` in RecognitionConfig must either be unspecified or match the value in the FLAC header `2`.

I cannot figure out what I am doing wrong. I have pretty much copy and pasted this from the google cloud speech API docs. Any advice?


Solution

  • This attribute (audio_channel_count) is the number of channels in the input audio data, and you only need to set this for MULTI-CHANNEL recognition. I would assume that this is your case, so as the message suggests, you need to set 'audio_channel_count' : 2 in your config to exactly match your audio file.

    Please take a look on the source code for more information about the attributes for RecognitionConfig object.