오디오 스크립트 작성

Google Distributed Cloud (GDC) 에어갭의 Vertex AI Speech-to-Text 서비스는 오디오 파일의 음성을 인식합니다. Speech-to-Text는 사전 학습된 API를 사용하여 감지된 오디오를 텍스트 스크립트로 변환합니다.

Speech-to-Text에는 수백만 시간의 오디오 데이터와 수십억 개의 텍스트 문장으로 학습된 음성용 고급 모델인 Chirp가 포함되어 있습니다. 이 모델은 대량의 언어별 지도 데이터에 중점을 둔다는 점에서 기존 음성 인식 기술과 대조됩니다. 이러한 기법을 통해 더 많은 언어와 억양에 맞게 개선된 인식 및 스크립트 작성을 사용자에게 제공할 수 있습니다.

이 페이지에서는 Distributed Cloud에서 Speech-to-Text API를 사용하여 오디오 파일을 텍스트로 변환하는 방법을 보여줍니다.

시작하기 전에

Speech-to-Text API를 사용하려면 Speech-to-Text API가 사용 설정된 프로젝트와 적절한 사용자 인증 정보가 있어야 합니다. 클라이언트 라이브러리를 설치하여 API를 호출할 수도 있습니다. 자세한 내용은 음성 인식 프로젝트 설정을 참고하세요.

기본 모델을 사용하여 오디오 스크립트 작성

Speech-to-Text는 음성 인식을 실행합니다. 음성을 인식하려는 오디오 파일을 API 요청의 콘텐츠로 직접 전송합니다. 시스템은 API 응답에서 결과로 생성된 텍스트를 반환합니다.

음성 인식 요청을 할 때는 RecognitionConfig 구성 객체를 제공해야 합니다. 이 객체는 API에 오디오 데이터를 처리하는 방법과 예상되는 출력의 종류를 알려줍니다. 이 구성 객체에 모델이 명시적으로 지정되지 않은 경우 Speech-to-Text에서 기본 모델을 선택합니다.

자세한 내용은 Speech API 문서를 참고하세요.

다음 예에서는 기본 Speech-to-Text 모델을 사용하여 오디오 파일의 음성을 텍스트로 변환합니다.

Python

Python 스크립트에서 Speech-to-Text 서비스를 사용하여 오디오 파일의 음성을 텍스트로 변환하려면 다음 단계를 따르세요.

  1. 최신 버전의 Speech-to-Text 클라이언트 라이브러리를 설치합니다.

  2. Python 스크립트에서 필수 환경 변수를 설정합니다.

  3. API 요청을 인증합니다.

  4. 만든 Python 스크립트에 다음 코드를 추가합니다.

    import base64
    
    from google.cloud import speech_v1p1beta1
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience="https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def get_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return speech_v1p1beta1.SpeechClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def speech_func(creds):
      tc = get_client(creds)
    
      content="BASE64_ENCODED_AUDIO"
    
      audio = speech_v1p1beta1.RecognitionAudio()
      audio.content = base64.standard_b64decode(content)
      config = speech_v1p1beta1.RecognitionConfig()
      config.encoding= speech_v1p1beta1.RecognitionConfig.AudioEncoding.ENCODING
      config.sample_rate_hertz=RATE_HERTZ
      config.language_code="LANGUAGE_CODE"
      config.audio_channel_count=CHANNEL_COUNT
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
      resp = tc.recognize(config=config, audio=audio, metadata=metadata)
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      speech_func(creds)
    

    다음을 바꿉니다.

    • ENDPOINT: 조직에서 사용하는 Speech-to-Text 엔드포인트입니다. 자세한 내용은 서비스 상태 및 엔드포인트 보기를 참고하세요.
    • PROJECT_ID: 프로젝트 ID입니다.
    • BASE64_ENCODED_AUDIO: Base64 표현으로 인코딩된 오디오 데이터 바이트입니다. 이 문자열은 ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv과 유사한 문자로 시작합니다. 자세한 내용은 RecognitionAudio를 참조하세요.
    • ENCODING: 요청에 전송된 오디오 데이터의 인코딩입니다(예: LINEAR16). 자세한 내용은 AudioEncoding를 참조하세요.
    • RATE_HERTZ: 요청에 전송된 오디오 데이터의 샘플링 레이트(Hz)(예: 16000)입니다. 자세한 내용은 RecognitionConfig를 참조하세요.
    • LANGUAGE_CODE: 제공된 오디오의 언어로서 BCP-47 언어 태그입니다. 지원되는 언어 및 해당 언어 코드 목록을 참고하세요.
    • CHANNEL_COUNT: 입력 오디오 데이터의 채널 수입니다(예: 1). 자세한 내용은 RecognitionConfig를 참조하세요.
  5. Python 스크립트를 저장합니다.

  6. Python 스크립트를 실행하여 오디오를 텍스트로 변환합니다.

    python SCRIPT_NAME
    

    SCRIPT_NAME을 Python 스크립트에 지정한 이름(예: speech.py)으로 바꿉니다.

Chirp로 오디오 스크립트 작성

Speech-to-Text 기본 모델과 마찬가지로 음성 인식 요청을 할 때 RecognitionConfig 구성 객체를 제공해야 합니다. Chirp를 사용하려면 model 필드에서 chirp 값을 설정하여 이 구성 객체에 이 모델을 명시적으로 지정해야 합니다.

다음 예에서는 Chirp 모델을 사용하여 오디오 파일의 음성을 텍스트로 변환합니다.

Python

Python 스크립트에서 Chirp를 사용하여 오디오 파일의 음성을 텍스트로 변환하려면 다음 단계를 따르세요.

  1. 최신 버전의 Speech-to-Text 클라이언트 라이브러리를 설치합니다.

  2. Python 스크립트에서 필수 환경 변수를 설정합니다.

  3. API 요청을 인증합니다.

  4. 만든 Python 스크립트에 다음 코드를 추가합니다.

    import base64
    
    # Import the client library.
    from google.cloud import speech_v1p1beta1
    from google.cloud.speech_v1p1beta1.services.speech import client
    from google.api_core.client_options import ClientOptions
    
    api_endpoint="ENDPOINT:443"
    
    def get_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return client.SpeechClient(credentials=creds, client_options=opts)
    
    # Specify the audio to transcribe.
    tc = get_client(creds)
    content = "BASE64_ENCODED_AUDIO"
    
    audio = speech_v1p1beta1.RecognitionAudio()
    audio.content = base64.standard_b64decode(content)
    
    config = speech_v1p1beta1.RecognitionConfig(
        encoding=speech_v1p1beta1.RecognitionConfig.AudioEncoding.ENCODING,
        sample_rate_hertz=RATE_HERTZ,
        audio_channel_count=CHANNEL_COUNT,
        language_code="LANGUAGE_CODE",
        model="chirp"
    )
    
    # Detect speech in the audio file.
    metadata = (("x-goog-user-project", "projects/PROJECT_ID"),)
    response = tc.recognize(config=config, audio=audio, metadata=metadata)
    
    for result in response.results:
        print("Transcript: {}".format(result.alternatives[0].transcript))
    

    다음을 바꿉니다.

    • ENDPOINT: 조직에서 사용하는 Speech-to-Text 엔드포인트입니다. 자세한 내용은 서비스 상태 및 엔드포인트 보기를 참고하세요.
    • BASE64_ENCODED_AUDIO: Base64 표현으로 인코딩된 오디오 데이터 바이트입니다. 이 문자열은 ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv과 유사한 문자로 시작합니다. 자세한 내용은 RecognitionAudio를 참조하세요.
    • ENCODING: 요청에 전송된 오디오 데이터의 인코딩입니다(예: LINEAR16). 자세한 내용은 AudioEncoding를 참조하세요.
    • RATE_HERTZ: 요청에 전송된 오디오 데이터의 샘플링 레이트(Hz)(예: 16000)입니다. 자세한 내용은 RecognitionConfig를 참조하세요.
    • CHANNEL_COUNT: 입력 오디오 데이터의 채널 수입니다(예: 1). 자세한 내용은 RecognitionConfig를 참조하세요.
    • LANGUAGE_CODE: 제공된 오디오의 언어로서 BCP-47 언어 태그입니다. 지원되는 언어 및 해당 언어 코드 목록을 참고하세요.
    • PROJECT_ID: 프로젝트 ID입니다.
  5. Python 스크립트를 저장합니다.

  6. Python 스크립트를 실행하여 오디오를 텍스트로 변환합니다.

    python SCRIPT_NAME
    

    SCRIPT_NAME을 Python 스크립트에 지정한 이름(예: speech.py)으로 바꿉니다.