转录音频

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:请求中发送的音频数据的采样率(以赫兹为单位),例如 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:请求中发送的音频数据的采样率(以赫兹为单位),例如 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