문제해결

Speech-to-Text를 사용할 때 문제가 발생할 경우에 유용한 문제해결 단계에 대해 알아보세요.

Speech-to-Text에 인증할 수 없음

'애플리케이션 기본 사용자 인증 정보'를 사용할 수 없다는 오류 메시지가 표시되거나 Speech-to-Text를 호출할 때 사용할 API 키를 가져오는 방법이 궁금할 수 있습니다.

음성 텍스트 변환은 인증에 애플리케이션 기본 사용자 인증 정보를 사용합니다.

프로젝트의 서비스 계정이 있어야 하며 서비스 계정의 키(JSON 파일)를 개발 환경에 다운로드한 다음 JSON 파일 위치를 GOOGLE_APPLICATION_CREDENTIALS라는 환경 변수로 설정해야 합니다.

또한 Speech-to-Text API를 호출하는 컨텍스트 내에서 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용할 수 있어야 합니다. 예를 들어 터미널 세션 내에서 변수를 설정했는데 IDE의 디버거에서 코드를 실행하면 코드의 실행 컨텍스트가 변수에 액세스하지 못할 수 있습니다. 이러한 상황에서는 적절한 인증이 이루어지지 않아 음성 텍스트 변환 요청이 실패할 수 있습니다.

GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정하는 방법에 대한 자세한 내용은 음성 텍스트 변환 빠른 시작 또는 애플리케이션 기본 사용자 인증 정보 사용에 관한 문서를 참조하세요.

Speech-to-Text에서 빈 응답을 반환함

텍스트 변환이 반환되지 않고(예: 비어 있는 {} JSON 응답을 받음) 오류가 발생하지 않았다면 오디오가 올바른 인코딩을 사용하지 않고 있을 가능성이 높습니다.

  1. 파일을 재생하여 출력을 듣습니다. 오디오가 깨끗하고 말을 이해할 수 있나요?

    파일을 재생하려면 SoX(Sound eXchange)play 명령어를 사용하면 됩니다. 서로 다른 오디오 인코딩을 바탕으로 한 몇 가지 예가 아래에 있습니다.

    FLAC 파일에는 샘플링 레이트, 인코딩 유형, 채널 수를 나타내는 헤더가 포함되어 있으며 다음과 같이 FLAC 파일을 재생할 수 있습니다.

    play audio.flac

    LINEAR16 파일에는 헤더가 없습니다. 이 파일을 재생하려면 샘플링 레이트, 인코딩 유형, 채널 수를 지정해야 합니다. LINEAR16 인코딩은 16비트, 부호 있는 정수, little-endian이어야 합니다.

    play --channels=1 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw

    MULAW 파일도 헤더를 포함하지 않으며 낮은 샘플링 레이트를 사용하는 경우가 종종 있습니다.

    play --channels=1 --rate=8000 --encoding=u-law audio.raw

    Speech-to-Text 서비스는 현재 한 개의 오디오 채널만 지원합니다.

  2. 데이터의 오디오 인코딩이 RecognitionConfig에 전송한 매개변수와 일치하는지 확인합니다. 예를 들어 요청으로 "encoding":"FLAC""sampleRateHertz":16000이 지정된 경우 SoXplay 명령어로 나열되는 오디오 데이터 매개변수는 다음과 같이 해당 매개변수와 일치해야 합니다.

    play audio.flac

    다음과 같아야 합니다.

    Encoding: FLAC
    Channels: 1 @ 16-bit
    Sampleratehertz: 16000Hz
    

    SoX 목록에 16000Hz가 아닌 Sampleratehertz가 표시되면 InitialRecognizeRequest"sampleRateHertz"를 변경하여 일치시킵니다. EncodingFLAC이 아니거나 Channels1 @ 16-bit가 아닌 경우, 이 파일을 직접 사용할 수 없으며 호환 인코딩으로 변환해야 합니다(다음 단계 참조).

  3. 오디오 파일이 FLAC 인코딩이 아닌 경우, SoX를 사용하여 FLAC으로 변환한 후 위의 단계를 반복하여 파일을 재생하고 인코딩, sampleRateHertz, 채널 수를 확인합니다. 다음은 다양한 오디오 파일 형식을 FLAC 인코딩으로 변환하는 몇 가지 예입니다.

    sox audio.wav --channels=1 --bits=16 audio.flac
    sox audio.ogg --channels=1 --bits=16 audio.flac
    sox audio.au --channels=1 --bits=16 audio.flac
    sox audio.aiff --channels=1 --bits=16 audio.flac
    

    원시 파일을 FLAC으로 변환하려면 해당 파일의 오디오 인코딩을 알아야 합니다. 예를 들어 16,000Hz의 스테레오 16비트 부호 있는 little-endian을 FLAC으로 변환하려면 다음과 같이 합니다.

    sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw --channels=1 --bits=16 audio.flac
    
  4. 빠른 시작의 예시 또는 샘플 애플리케이션 중 하나를 제공된 샘플 오디오 파일과 함께 실행합니다. 예가 성공적으로 실행되면 샘플 오디오 파일을 원하는 오디오 파일로 바꿉니다.

음성 인식의 예기치 않은 결과

Speech-to-Text에서 반환된 결과가 기대한 것과 다른 경우 다음 단계를 따르세요.

  • 오류 메시지에 대한 응답을 확인합니다.
  • 할당량 및 한도에 유의합니다.

  • 인식 정확도를 향상시키려면 권장사항의 가이드라인을 따르세요.