本文档是 Media Translation 的基本用法指南。 本概念指南说明了您可以对 Media Translation 发出的请求类型、如何构建这些请求以及如何处理其响应。我们建议所有 Media Translation 用户阅读本指南和一份相关教程,然后再深入研究 API 本身。
语音翻译请求
目前,Media Translation 只有一种执行语音翻译的方法:
- 流式翻译(仅限 gRPC)对 gRPC 双向流内提供的音频数据执行翻译。 流式请求专为实时翻译(例如从麦克风采集实时音频)而设计。流式翻译可以在采集音频的同时提供临时结果,例如当用户还在讲话时就显示结果。流式翻译请求仅限于持续时长不超过 5 分钟的音频数据。
请求中应包含配置参数或者音频数据。以下部分更详细地描述了这些类型的语音翻译请求、它们生成的响应以及如何处理这些响应。
流式语音翻译请求
流式 Media Translation API 请求可以是语音翻译配置,也可以是音频数据。下面展示了一个配置请求的示例:
{ "audio_config": { "audio_encoding": "linear16", "sample_rate_hertz": 16000, "source_language_code": "en-US", "target_language_code": "zh", "model" : "google-provided-model/video", } "single_utterance" : False }
音频数据请求的示例如下所示:
{ "audio_content " : "\366c\256\375jQ\r\312\205j\271\243%/u\216z\330\354\221\360\253KJ\005\" }
第一个 StreamingTranslateSpeechRequest
必须包含一个类型为 StreamingTranslateSpeechConfig 的配置,且不附带任何音频。随后在同一流中发送的 StreamingTranslateSpeechRequest
将由原始音频字节的连续帧组成。
StreamingTranslateSpeechConfig
包含以下字段:
audio_config
:该字段为必须字段,它包含类型为 TranslateSpeechConfig 的音频配置信息。single_utterance
:该字段为可选字段,默认值为false
,它指示此请求是否应该在检测不到语音后自动结束。如果设置了该字段,则 Media Translation 将检测暂停、静音或非语音音频以确定何时结束翻译。如果未设置该字段,则系统将继续侦听并处理音频,直到语音流直接关闭或超出此语音流的长度限制为止。将single_utterance
设置为true
对于处理语音命令很有用。
TranslateSpeechConfig
包含以下子字段:
audio_encoding
:该字段为必需字段,它指定所提供的音频(类型为AudioEncoding
)的编码方案。如果您可以选择编解码器,可首选无损编码(如FLAC
或LINEAR16
)以获得最佳性能。如需了解详情,请参阅音频编码。sample_rate_hertz
:该字段为必需字段,它指定所提供音频的采样率(以赫兹为单位)。如需详细了解采样率,请参阅下面的采样率。source_language_code
:该字段为必需字段,它包含所提供音频的语言和区域/语言区域以用于语音识别。语言代码必须是 BCP-47 标识符。请注意,语言代码通常包括语言主标记和表示方言的区域子标记(例如,在上述示例中,“en”代表英语,“US”代表美国)。如需了解支持的语言列表,请参阅支持的语言。- “target_language_code”:该字段为必需字段,它包含所提供音频的文本翻译所用的语言。 语言代码必须是 BCP-47 标识符。请注意,语言代码通常仅包含主要语言标记,因为翻译文本不会考虑方言。但“zh-CN”和“zh-TW”的翻译文本不同。 如需了解支持的语言列表,请参阅支持的语言。
音频通过类型为 StreamingTranslateSpeechRequest 的 audio_content
字段提供给 Media Translation。audio_content
字段包含嵌入在请求之中的待评估音频。请参阅下面的嵌入音频内容了解详情。
流式语音翻译响应
流式语音翻译结果在类型为 StreamingTranslateSpeechResponse 的一系列响应中返回。 此类响应包含以下字段:
speech_event_type
包含类型为 SpeechEventType 的事件。这些事件的值指示确定一段话语何时已经完成。语音事件用作您的语音流响应中的标记。 在收到END_OF_SINGLE_UTTERANCE
时,用户需要停止发送请求,同时等待接收剩余的翻译响应。results
包含一组结果,这些结果可能是临时结果,也可能是最终结果,类型为 StreamingTranslateSpeechResult。results
列表包含以下子字段:translation
包含翻译文本。isFinal
表示此列表条目中获得的结果是临时结果还是最终结果。
以下内容更为详细地介绍了这些请求和响应参数。
采样率
您可以在配置请求的 sample_rate_hertz
字段中指定音频的采样率,并且它必须与相关音频内容或音频流的采样率相一致。Media Translation 支持的采样率为 8000 Hz 到 48000 Hz。
如果您在对源素材进行编码时可以选择,请使用 16000 Hz 的采样率采集音频。低于此值的采样率可能会对语音识别准确率造成不利影响,进而降低翻译质量;而高于此值的采样率对语音识别质量没有明显影响,还可能会增加延迟时间。
但是,如果您的音频数据已经录制完毕,但并非采用 16000 Hz 的采样率,请勿将音频重新采样为 16000 Hz。例如,大多数传统电话音频使用 8000 Hz 的采样率,这可能会产生不够准确的结果。但如果您必须使用此类音频,请将其以原生采样率提供给 Media Translation API。
语言
Media Translation 的识别/翻译引擎支持各种语言/方言对。您可以使用 BCP-47 标识符,在请求配置的 source_language_code
和 target_language_code
字段中指定音频的语言(以及国家或地区方言)。
语言支持页面提供了各项功能所支持语言的完整列表。
选择模型
Media Translation 可以使用多种机器学习模型之一来翻译音频文件。Google 已经针对特定的音频类型和来源对这些模型进行了训练。
向 Media Translation 发送音频翻译请求时,您可以通过指定模型来改进您收到的结果。这样,Media Translation API 可以使用经过训练以识别该特定类型源的语音音频的机器学习模型来处理您的音频文件。
要为语音翻译指定模型,请在请求的 TranslateSpeechConfig 对象中包含 model
字段,并指定您要使用的模型。
Media Translation 可以使用以下类型的机器学习模型来翻译您的音频文件。
类型 | 名称字符串 | 说明 |
---|---|---|
视频 | google-provided-model/video |
使用此模型来转录视频剪辑中的音频或有多个人讲话的音频。为获得最佳效果,请提供以 16000 Hz 或更高采样率录制的音频。 注意:这是一种高级模型,其费用高于标准费率。 |
电话 | google-provided-model/(enhanced-)phone-call |
使用此模型转录电话通话的音频。通常情况下,电话音频以 8000 Hz 的采样率录制。 注意:该增强型电话模型是一种高级模型,其费用高于标准价格。 |
Media Translation:默认 | google-provided-model/default |
如果您的音频不适合上面介绍的任何模型,请使用此模型。例如,您可以使用此模型来处理仅有一个讲话人的长音频录音。理想情况下,该音频采用高保真度,以 16000 Hz 或更高的采样率录制。 |
嵌入音频内容
如果在流式请求中传递了 audio_content
字段,嵌入式音频会包含在流式语音翻译请求中。对于在 gRPC 请求中作为内容提供的嵌入音频,该音频必须与 Proto3 序列化兼容,并以二进制数据的形式提供。
在使用 Google Cloud 客户端库构建请求时,通常您会直接在 audio_content
字段中写出此二进制数据。
如需查看代码示例,请参阅翻译流式传输的音频。