Speech-to-Text 기본사항

이 문서는 Speech-to-Text 사용에 대한 기본사항을 설명하는 가이드입니다. 이 개념 가이드에서는 Speech-to-Text에 보낼 수 있는 요청 유형, 요청 작성 방법, 응답 처리 방법을 설명합니다. Speech-to-Text의 모든 사용자는 이 API를 사용하기 전에 이 가이드와 관련 가이드 중 하나를 읽는 것이 좋습니다.

음성 요청

Speech-to-Text에는 음성 인식을 수행하는 세 가지 주요 방법이 있습니다. 이들 방법은 다음과 같습니다.

  • 동기 인식(REST, gRPC)은 오디오 데이터를 Speech-to-Text API로 보내고, 해당 데이터에 대해 인식을 수행하고, 오디오가 모두 처리된 후 결과를 반환합니다. 동기 인식 요청은 길이가 1분 이하인 오디오 데이터로 제한됩니다.

  • 비동기 인식(REST, gRPC)은 오디오 데이터를 Speech-to-Text API로 보내고, 장기 실행 작업을 시작합니다. 이 작업을 사용하여 주기적으로 인식 결과를 폴링할 수 있습니다. 최대 480분 길이의 오디오 데이터에는 비동기식 요청을 사용하세요.

  • 스트리밍 인식(gRPC만 해당)은 gRPC 양방향 스트림에 제공되는 오디오 데이터를 인식합니다. 스트리밍 요청은 마이크에서 라이브 오디오 캡처와 같은 실시간 인식 용도로 설계되었습니다. 스트리밍 인식은 오디오 캡처 중에 중간 결과를 제공하므로, 예를 들어 사용자가 계속 말하는 동안에 결과를 표시할 수 있습니다.

요청에는 오디오 데이터는 물론 구성 매개변수도 포함됩니다. 다음 섹션에서는 이러한 인식 요청 유형, 요청을 통해 생성되는 응답, 응답 처리 방법을 자세하게 설명합니다.

Speech-to-Text API 인식

Speech-to-Text API 동기 인식 요청은 음성 오디오 데이터 인식을 수행하는 가장 간단한 방법입니다. Speech-to-Text는 동기식 요청으로 전송된 음성 오디오 데이터(최대 1분 길이)를 처리할 수 있습니다. Speech-to-Text는 오디오를 모두 처리하고 인식한 후 응답을 반환합니다.

동기식 요청은 차단 요청이므로 Speech-to-Text가 응답을 반환한 후에야 다음 요청을 처리할 수 있습니다. Speech-to-Text는 일반적으로 실시간보다 빠르게 오디오를 처리하며, 30초 길이의 오디오를 평균 15초 내에 처리합니다. 오디오 품질이 나쁘면 인식 요청을 처리하는 데 시간이 상당히 오래 걸릴 수 있습니다.

Speech-to-Text에는 Speech-to-Text API의 동기식 요청과 비동기식 요청을 호출하는 REST 및 gRPC 메서드 모두가 있습니다. 이 문서에서는 API의 기본 사용법을 더 간단하게 보여주고 설명할 수 있는 REST API를 다룹니다. 그러나 REST 또는 gRPC 요청의 기본 구성은 매우 유사합니다. 스트리밍 인식 요청 은 gRPC에서만 지원됩니다.

동기 음성 인식 요청

동기식 Speech-to-Text API 요청은 음성 인식 구성과 오디오 데이터로 구성됩니다. 샘플 요청은 다음과 같습니다.

    {
        "config": {
            "encoding": "LINEAR16",
            "sampleRateHertz": 16000,
            "languageCode": "en-US",
        },
        "audio": {
            "uri": "gs://bucket-name/path_to_audio_file"
        }
    }
    

Speech-to-Text API의 모든 동기 인식 요청에는 음성 인식 config 필드(RecognitionConfig 유형)가 포함되어야 합니다. RecognitionConfig에는 다음과 같은 하위 필드가 있습니다.

  • encoding - (필수) 제공된 오디오의 인코딩 체계를 AudioEncoding 유형으로 지정합니다. 코덱을 선택할 수 있는 경우, 최상의 성능을 원한다면 FLAC 또는 LINEAR16과 같은 무손실 인코딩을 선택하는 것이 좋습니다. 자세한 내용은 오디오 인코딩을 참조하세요. 파일 헤더에 인코딩이 포함된 FLACWAV 파일의 경우 encoding 필드는 필수가 아닌 선택사항입니다.
  • sampleRateHertz - (필수) 제공된 오디오의 샘플링 레이트(Hz)를 지정합니다. 샘플링 레이트에 대한 자세한 내용은 아래의 샘플링 레이트를 참조하세요. 파일 헤더에 샘플링 레이트가 포함된 FLACWAV 파일의 경우 sampleRateHertz 필드는 필수가 아닌 선택사항입니다.
  • languageCode - (필수) 제공된 오디오의 음성 인식에 사용할 언어 + 리전/지역을 포함합니다. 언어 코드는 BCP-47 식별자여야 합니다. 언어 코드는 일반적으로 기본 언어 태그와 방언을 나타내는 보조 지역 하위 태그로 구성됩니다(예: 위의 예에서 'en'은 영어를, 'US'는 미국을 나타냄). 지원되는 언어 목록은 지원되는 언어를 참조하세요.
  • maxAlternatives - (선택사항, 기본값은 1) 응답에서 제공할 대체 변환 텍스트 수를 나타냅니다. 기본적으로 Speech-to-Text API는 하나의 기본 변환 텍스트를 제공합니다. 다른 대체 변환 텍스트를 고려하기 원할 경우 maxAlternatives를 더 높은 값으로 설정합니다. 인식기가 대체 변환 텍스트의 품질이 적절하다고 판단한 경우에만 Speech-to-Text가 대체 변환 텍스트를 반환합니다. 일반적으로 대체 변환 텍스트는 사용자 의견이 필요한 실시간 요청(예: 음성 명령)에 더 적합하므로 스트리밍 인식 요청에 알맞습니다.
  • profanityFilter- (선택사항) 욕설이 포함된 단어 또는 구문을 필터링할지 여부를 나타냅니다. 필터링된 단어는 첫 번째 글자와 별표(나머지 글자)로 표시됩니다(예: f***). 욕설 필터는 단일 단어에 대해서만 작동하며, 구문 또는 단어 조합으로 된 욕설이나 모욕적인 언사는 감지하지 않습니다.
  • speechContext- (선택사항) 이 오디오를 처리하는 데 필요한 추가 컨텍스트 정보를 포함합니다. 컨텍스트에는 다음과 같은 하위 필드가 포함됩니다.
    • phrases - 음성 인식 태스크에 힌트를 제공하는 단어와 구문의 목록을 포함합니다. 자세한 내용은 음성 컨텍스트에 대한 정보를 참조하세요.

오디오는 RecognitionAudio 유형의 audio 매개변수를 통해 Speech-to-Text에 제공됩니다. audio 필드에는 다음 하위 필드 중 하나가 포함됩니다.

  • content는 요청에 삽입된 형태의 평가 대상 오디오입니다. 자세한 내용은 아래의 오디오 콘텐츠 삽입을 참조하세요. 이 필드에서 직접 전달되는 오디오 길이는 1분으로 제한됩니다.
  • uri는 오디오 콘텐츠에 대한 URI입니다. 이 파일은 gzip 등으로 압축되지 않은 파일이어야 합니다. 현재 이 필드에는 Google Cloud Storage URI(gs://bucket-name/path_to_audio_file 형식)가 포함되어야 합니다. 아래의 URI로 오디오 참조 전달을 확인하세요.

이러한 요청 및 응답 매개변수에 대한 자세한 내용은 아래에 있습니다.

샘플링 레이트

요청 구성의 sampleRateHertz 필드에서 오디오 샘플링 레이트를 지정합니다. 이 샘플링 레이트는 관련 오디오 콘텐츠 또는 스트림의 샘플링 레이트와 일치해야 합니다. Speech-to-Text에서는 8000Hz~48000Hz의 샘플링 레이트가 지원됩니다. FLAC 또는 WAV 파일의 샘플링 레이트는 sampleRateHertz 필드가 아닌 파일 헤더에서 결정될 수 있습니다.

소스 자료를 인코딩할 때 선택할 수 있다면 16,000Hz 샘플링 레이트를 사용하여 오디오를 캡처하는 것이 좋습니다. 이 값보다 낮으면 음성 인식 정확도가 손상될 수 있습니다. 이보다 높은 레벨의 값은 음성 인식 품질에 큰 영향을 주지 않습니다.

그러나 오디오 데이터가 16,000Hz가 아닌 기존 샘플링 레이트로 이미 녹음된 경우에는 오디오를 16,000Hz로 다시 샘플링하지 마세요. 예를 들어 대부분의 이전 전화 통화 오디오는 8,000Hz 샘플링 레이트를 사용하므로 결과 정확도가 떨어질 수 있습니다. 이러한 오디오를 사용해야 하면 Speech API에 원래 샘플링 레이트로 오디오를 제공하세요.

언어

Speech-to-Text의 인식 엔진은 다양한 언어와 방언을 지원합니다. 요청 구성의 languageCode 필드에서 BCP-47 식별자를 사용하여 오디오 언어(그리고 국가 또는 지역 방언)를 지정합니다.

언어 지원 페이지에서 각 기능에 지원되는 언어의 전체 목록을 확인할 수 있습니다.

시차(타임스탬프)

Speech-to-Text는 제공된 오디오에서 인식되는 각 단어의 시작 부분과 끝 부분의 시차 값(타임스탬프)을 포함할 수 있습니다. 시차 값은 오디오 시작으로부터 경과된 시간을 100ms 단위로 나타냅니다.

시차는 특히 긴 오디오 파일을 분석하는 경우, 즉 인식된 텍스트에서 특정 단어를 검색하고 원본 오디오에서 찾아야 하는 경우에 유용합니다. 시차는 recognize, streamingrecognize, longrunningrecognize 등 모든 인식 방법에서 지원됩니다.

인식 응답에 제공된 첫 번째 대체 변환 텍스트의 시차 값만 포함됩니다.

요청 결과에 시차를 포함하려면 요청 구성에서 enableWordTimeOffsets 매개변수를 true로 설정합니다. REST API 또는 클라이언트 라이브러리를 사용하는 예시는 시차(타임스탬프) 사용을 참조하세요. 예를 들어 다음과 같이 요청 구성에 enableWordTimeOffsets 매개변수를 포함할 수 있습니다.

    {
    "config": {
      "languageCode": "en-US",
      "enableWordTimeOffsets": true
      },
    "audio":{
      "uri":"gs://gcs-test-data/gettysburg.flac"
      }
    }
    

Speech-to-Text API에서 반환된 결과에는 다음과 같이 인식된 각 단어에 대한 시차 값이 포함됩니다.

    {
      "name": "6212202767953098955",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
        "progressPercent": 100,
        "startTime": "2017-07-24T10:21:22.013650Z",
        "lastUpdateTime": "2017-07-24T10:21:45.278630Z"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
        "results": [
          {
            "alternatives": [
              {
                "transcript": "Four score and twenty...(etc)...",
                "confidence": 0.97186122,
                "words": [
                  {
                    "startTime": "1.300s",
                    "endTime": "1.400s",
                    "word": "Four"
                  },
                  {
                    "startTime": "1.400s",
                    "endTime": "1.600s",
                    "word": "score"
                  },
                  {
                    "startTime": "1.600s",
                    "endTime": "1.600s",
                    "word": "and"
                  },
                  {
                    "startTime": "1.600s",
                    "endTime": "1.900s",
                    "word": "twenty"
                  },
                  ...
                ]
              }
            ]
          },
          {
            "alternatives": [
              {
                "transcript": "for score and plenty...(etc)...",
                "confidence": 0.9041967,
              }
            ]
          }
        ]
      }
    }
    

모델 선택

Speech-to-Text는 여러 머신러닝 모델 중 하나를 사용하여 오디오 파일의 텍스트를 변환할 수 있습니다. Google은 이러한 음성 인식 모델에 특정 오디오 유형 및 소스를 학습시켰습니다.

Speech-to-Text에 오디오 텍스트 변환 요청을 보내는 경우 원본 오디오 소스를 지정하면 더욱 향상된 결과를 받을 수 있습니다. 이렇게 하면 Speech-to-Text API가 특정 소스 유형의 음성 오디오를 인식하도록 학습된 머신러닝 모델을 사용하여 오디오 파일을 처리합니다.

음성 인식 모델을 지정하려면 요청의 RecognitionConfig 객체에 model 필드를 포함하여 사용할 모델을 지정합니다.

Speech-to-Text는 오디오 파일의 텍스트 변환에 다음 유형의 머신러닝 모델을 사용할 수 있습니다.

유형 열거형 상수 설명
동영상 video

동영상 클립의 오디오나 화자가 여러 명 포함된 오디오를 텍스트로 변환하려면 이 모델을 사용합니다. 최상의 결과를 얻으려면 16,000Hz 이상의 샘플링 레이트로 녹음된 오디오를 제공하세요.

참고: 표준 요금보다 비싼 프리미엄 모델입니다.

전화 통화 phone_call

전화 통화 오디오 스크립트를 작성하려면 이 모델을 사용합니다. 일반적으로 전화 오디오는 8,000Hz 샘플링 레이트로 녹음됩니다.

참고: 고급 전화 모델은 표준 요금보다 비싼 프리미엄 모델입니다.

ASR: 명령어 및 검색 command_and_search

짧은 오디오 클립을 텍스트로 변환하려면 이 모델을 사용합니다. 음성 명령이나 음성 검색 등이 여기에 해당됩니다.

ASR: 기본값 default

오디오가 앞에서 설명한 모델에 해당하지 않는 경우에 이 모델을 사용합니다. 예를 들어 화자가 1명뿐인 긴 형태의 오디오 녹음에 이 모델을 사용할 수 있습니다. 16,000Hz 이상의 샘플링 레이트로 녹음된 Hi-Fi 오디오가 좋습니다.

오디오 콘텐츠 삽입

요청의 audio 필드 내에 content 매개변수를 전달하면 삽입된 오디오가 음성 인식 요청에 포함됩니다. gRPC 요청 내에서 콘텐츠로 제공되는 삽입된 오디오의 경우에는 오디오가 Proto3 직렬화와 호환되고 바이너리 데이터로 제공되어야 합니다. REST 요청 내에서 콘텐츠로 제공되는 삽입된 오디오의 경우에는 오디오가 JSON 직렬화와 호환되고 먼저 Base64로 인코딩되어야 합니다. 자세한 내용은 오디오 콘텐츠를 Base64로 인코딩을 참조하세요.

Google Cloud 클라이언트 라이브러리를 사용하여 요청을 작성하는 경우, 일반적으로 이 바이너리(또는 base-64로 인코딩된) 데이터를 content 필드에 직접 작성합니다.

URI 참조로 오디오 전달

보다 일반적으로는 음성 요청의 audio 필드에 Google Cloud Storage에 있는 다음 형식의 오디오 파일(base64가 아닌 바이너리 형식)을 가리키는 uri 매개변수를 전달합니다.

    gs://bucket-name/path_to_audio_file
    

예를 들어 음성 요청의 다음 부분은 빠른 시작에서 사용되는 샘플 오디오 파일을 참조합니다.

    ...
        "audio": {
            "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
        }
    ...
    

다음 중 하나와 같이 Google Cloud Storage 파일을 읽을 수 있는 적절한 액세스 권한이 있어야 합니다.

  • 공개적으로 읽기 가능(예: Google 샘플 오디오 파일)
  • 서비스 계정 승인을 사용하는 경우 서비스 계정에서 읽기 가능
  • 사용자 계정 승인에 3-legged OAuth를 사용하는 경우 사용자 계정에서 읽기 가능

Google Cloud Storage의 액세스 관리에 대한 자세한 내용은 Google Cloud Storage 문서의 액세스 제어 목록 생성 및 관리를 참조하세요.

Speech-to-Text API 응답

앞에서 설명한 것처럼 동기식 Speech-to-Text API 응답은 제공된 오디오 길이에 비례하여 결과를 반환하는 데 다소 시간이 소요될 수 있습니다. 처리가 완료되면 API는 다음과 같이 응답을 반환합니다.

    {
      "results": [
        {
          "alternatives": [
            {
              "confidence": 0.98267895,
              "transcript": "how old is the Brooklyn Bridge"
            }
          ]
        }
      ]
    }
    

다음은 필드에 대한 설명입니다.

  • results에는 결과(SpeechRecognitionResult 유형) 목록이 포함됩니다. 여기서 각 결과는 특정 오디오 세그먼트에 해당되고, 오디오 세그먼트는 말을 멈춘 순간으로 구분됩니다. 각 결과는 다음 필드 중 하나 이상으로 구성됩니다.
    • alternatives에는 SpeechRecognitionAlternatives 유형의 가능한 변환 텍스트 목록이 포함됩니다. 대체 변환 텍스트가 두 개 이상 나타날지 여부는 maxAlternatives1보다 큰 값으로 설정하여 대체 변환 텍스트를 두 개 이상 요청했는지 여부와 Speech-to-Text가 충분히 높은 품질의 대체 변환 텍스트를 생성했는지 여부에 따라 달라집니다. 각 대체 변환 텍스트는 다음 필드로 구성됩니다.
      • transcript에는 변환 텍스트가 포함됩니다. 아래의 변환 텍스트 처리를 참조하세요.
      • confidence에는 특정 변환 텍스트에 대한 Speech-to-Text의 신뢰도를 나타내는 값(0~1)이 포함됩니다. 아래의 신뢰값 해석을 참조하세요.

제공된 오디오에서 음성을 인식할 수 없으면 반환되는 results 목록에 항목이 없습니다. 음성을 인식하지 못하는 이유는 일반적으로 오디오 품질이 매우 나쁘거나 언어 코드, 인코딩 또는 샘플링 레이트 값이 제공된 오디오와 일치하지 않기 때문입니다.

다음 섹션에서는 이 응답의 구성요소를 설명합니다.

Speech-to-Text API의 각 동기식 응답은 인식된 모든 오디오가 포함된 단일 결과가 아닌 여러 결과 목록을 반환합니다. 인식된 오디오 목록(transcript 요소 내)은 연속 순서로 나타납니다.

대체 변환 텍스트 선택

성공적인 동기 인식 응답 내의 각 결과에는 alternatives가 하나 이상 포함될 수 있습니다(요청의 maxAlternatives 값이 1보다 큰 경우). Speech-to-Text가 대체 변환 텍스트의 신뢰값이 충분하다고 판단하면 응답에 이 대체 변환 텍스트가 포함됩니다. 응답의 첫 번째 대체 변환 텍스트는 항상 최고의(가능성이 가장 높은) 대체 변환 텍스트입니다.

maxAlternatives1보다 큰 값으로 설정한다고 해서 반드시 대체 변환 텍스트가 여러 개 반환되는 것은 아닙니다. 일반적으로 하나 이상의 대체 변환 텍스트는 스트리밍 인식 요청을 통해 결과를 확인하는 사용자에게 실시간 옵션을 제공할 때 더 적합합니다.

변환 텍스트 처리

응답 내에서 제공되는 각 대체 변환 텍스트에는 인식된 텍스트를 포함하는 transcript가 포함됩니다. 대체 변환 텍스트가 순차적으로 제공되면 이러한 변환 텍스트를 함께 연결해야 합니다.

다음 Python 코드는 결과 목록에 대해 반복 실행되어 변환 텍스트를 함께 연결합니다. 어떠한 경우에든 첫 번째 대체 변환 텍스트(0번째)가 사용됩니다.

    response = service_request.execute()
    recognized_text = 'Transcribed Text: \n'
    for i in range(len(response['results'])):
        recognized_text += response['results'][i]['alternatives'][0]['transcript']
    

신뢰값

confidence 값은 0.0과 1.0 사이의 추정치이며, 오디오의 각 단어에 할당된 '가능성' 값을 집계하여 계산됩니다. 숫자가 클수록 각 단어가 정확하게 인식되었을 가능성이 높아집니다. 이 필드는 일반적으로 최상위 가설에만 제공되며 is_final=true인 결과에 대해서만 제공됩니다. 예를 들어, confidence 값을 사용하여 대체 결과를 사용자에게 표시할지 아니면 사용자에게 확인을 요청할지를 결정할 수 있습니다.

그러나 이 모델은 confidence 점수뿐만 아니라 문장 컨텍스트와 같은 다른 여러 가지 신호를 기반으로 하여 '최상의' 결과를 결정합니다. 이러한 이유로 최상위 결과의 신뢰도 점수가 최고점이 아닌 경우가 있을 수 있습니다. 대체 결과를 여러 개 요청하지 않은 경우 반환된 하나의 '최상의' 결과는 예상보다 낮은 신뢰값을 가질 수 있는데, 예를 들어 많이 쓰이지 않는 단어가 사용되었을 때 이러한 경우가 발생할 수 있습니다. 희귀어는 올바르게 인식되더라도 낮은 '가능성' 값을 가질 수 있습니다. 모델이 컨텍스트에 따라 희귀어를 가장 적합한 옵션으로 결정하면 대체 옵션보다 confidence 값이 낮더라도 최상위에 결과를 표시합니다.

비동기식 요청 및 응답

LongRunningRecognize 메서드에 대한 비동기식 Speech-to-Text API 요청은 동기식 Speech-to-Text API 요청과 형식이 동일합니다. 하지만 비동기식 요청은 응답을 반환하는 대신 장기 실행 작업(Operation 유형)을 시작하고 이 작업을 피호출자에게 즉시 반환합니다.

일반적인 작업 응답은 다음과 같습니다.

    {
      "name": "operation_name",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata"
        "progressPercent": 34,
        "startTime": "2016-08-30T23:26:29.579144Z",
        "lastUpdateTime": "2016-08-30T23:26:29.826903Z"
      }
    }
    

아직 결과가 나타나지 않습니다. Speech-to-Text는 제공된 오디오를 계속 처리하고 이 작업을 사용하여 최종 결과를 저장합니다. 이 결과는 요청 완료 시 작업의 response 필드(LongRunningRecognizeResponse 유형)에 나타납니다.

요청 완료 후 전체 응답은 다음과 같습니다.

    {
      "name": "1268386125834704889",
      "metadata": {
        "lastUpdateTime": "2016-08-31T00:16:32.169Z",
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongrunningRecognizeMetadata",
        "startTime": "2016-08-31T00:16:29.539820Z",
        "progressPercent": 100
      }
      "response": {
        "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
        "results": [{
          "alternatives": [{
            "confidence": 0.98267895,
            "transcript": "how old is the Brooklyn Bridge"
          }]}]
      },
      "done": True,
    }
    

doneTrue로 설정되었고 작업의 responseSpeechRecognitionResult 유형의 결과 집합이 포함됩니다. 이 결과 유형은 동기식 Speech-to-Text API 인식 요청에서 반환되는 유형과 동일합니다.

기본적으로 비동기식 REST 응답은 done을 기본값인 False로 설정합니다. 하지만 JSON은 필드 내에 기본값이 존재하도록 요구하지 않으므로, 작업 완료 여부 테스트 시 done 필드가 존재하고 True로 설정되어 있는지 모두 테스트해야 합니다.

스트리밍 Speech-to-Text API 인식 요청

스트리밍 Speech-to-Text API 인식 호출은 양방향 스트림 내에서 오디오의 실시간 캡처 및 인식을 위해 설계되었습니다. 애플리케이션은 요청 스트림에서 오디오를 보내고 응답 스트림에서 중간 및 최종 인식 결과를 실시간으로 받을 수 있습니다. 중간 결과는 특정 오디오 섹션의 현재 인식 결과를 나타내며, 최종 인식 결과는 해당 오디오 섹션의 최상의 최종 추측을 나타냅니다.

스트리밍 요청

단일 요청 내에서 구성과 오디오를 모두 보내는 동기 및 비동기식 호출과 달리 스트리밍 Speech API를 호출하려면 요청을 여러 개 전송해야 합니다. 첫 번째 StreamingRecognizeRequest에는 오디오 없이 StreamingRecognitionConfig 유형의 구성이 포함되어야 합니다. 그런 다음 동일한 스트림을 통해 전송되는 후속 StreamingRecognizeRequest는 원시 오디오 바이트의 연속 프레임으로 구성됩니다.

StreamingRecognitionConfig는 다음 필드로 구성됩니다.

  • config - (필수) RecognitionConfig 유형의 오디오 구성 정보를 포함하며 동기 및 비동기식 요청에 표시되는 것과 동일합니다.
  • single_utterance - (선택사항, 기본값: false) 음성이 더 이상 감지되지 않으면 이 요청을 자동으로 종료할지 여부를 나타냅니다. 이 필드가 설정되면 Speech-to-Text가 말의 멈춤, 정적 또는 비언어 오디오를 감지하여 인식을 종료할 시기를 결정합니다. 설정되지 않으면 스트림이 직접 종료되거나 스트림 제한 길이가 초과될 때까지 스트림이 오디오를 계속 듣고 처리합니다. single_utterancetrue로 설정하면 음성 명령 처리에 유용합니다.
  • interim_results - (선택사항, 기본값은 false) 이 스트림 요청이 임시 결과를 반환해야 함을 나타냅니다. 임시 결과는 오디오가 추가로 처리됨에 따라 나중에 수정될 수 있습니다. is_finalfalse로 설정하면 중간 결과가 응답 내에 기록됩니다.

스트리밍 응답

스트리밍 음성 인식 결과는 StreamingRecognitionResponse 유형인 일련의 응답 내에서 반환됩니다. 이러한 응답은 다음 필드로 구성됩니다.

  • speechEventType에는 SpeechEventType 유형의 이벤트가 포함됩니다. 이러한 이벤트 값은 단일 발화가 완료된 것으로 판단되는 시점을 나타냅니다. 음성 이벤트는 스트림 응답 내에서 마커로 작동합니다.
  • results에는 StreamingRecognitionResult 유형인 중간 또는 최종 결과의 목록이 포함됩니다. results 목록에는 다음과 같은 하위 필드가 있습니다.
    • alternatives에는 대체 변환 텍스트 목록이 포함됩니다.
    • isFinal은 이 목록 항목에서 얻은 결과가 중간 결과인지 최종 결과인지를 나타냅니다.
    • stability는 지금까지 얻은 결과의 변동성을 나타냅니다. 0.0은 완전한 불안정성을 나타내고 1.0은 완전한 안전성을 나타냅니다. 변환 텍스트의 정확도를 추정하는 신뢰도와 달리 stability는 주어진 부분 결과의 변동 여부를 추정합니다. isFinaltrue로 설정되면 stability는 설정되지 않습니다.