转录音频

Google Distributed Cloud (GDC) 网闸隔离配置上的 Vertex AI Speech-to-Text 服务可识别音频文件中的语音。Speech-to-Text 使用其预训练的 API 将检测到的音频转换为文字转写。

本页面介绍了如何在 Distributed Cloud 上使用 Speech-to-Text API 将音频文件转写为文字。

准备工作

如需转写音频文件,请向管理员申请必要的权限。

申请 IAM 角色

如需使用默认 Speech-to-Text 模型转写音频,请与您的 IAM 项目管理员联系,请求在项目命名空间中授予 AI Speech Developer (ai-speech-developer) 角色。

如需详细了解此角色,请参阅准备 IAM 权限。

在开始使用 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 as speech
    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.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)
      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.RecognitionAudio(
          content=base64.standard_b64decode(content)
      )
      config = speech.RecognitionConfig(
          encoding=speech.RecognitionConfig.AudioEncoding.ENCODING,
          sample_rate_hertz=RATE_HERTZ,
          audio_channel_count=CHANNEL_COUNT,
          language_code="LANGUAGE_CODE",
      )
    
      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:请求中发送的音频数据的采样率(以赫兹为单位,8000-48000),例如 16000。LINEAR16、FLAC 和 MULAW 编码(包括 WAV 文件)必须提供此字段。如需了解详情,请参阅 RecognitionConfig。
    • LANGUAGE_CODE:所提供音频的语言,以 BCP-47 语言标记形式表示,例如 en-US。请参阅支持的语言及其各自语言代码的列表。
    • CHANNEL_COUNT:输入音频数据中的声道数 (1-8),例如单声道音频为 1。对于 LINEAR16、FLAC 和 MULAW 编码,必须设置 audio_channel_count。如需了解详情,请参阅 RecognitionConfig。
  5. 保存 Python 脚本。

  6. 运行 Python 脚本以转写音频:

    python SCRIPT_NAME
    

    将 SCRIPT_NAME 替换为您为 Python 脚本指定的名称,例如 speech.py。