本页介绍如何在 Speech-to-Text 转录的音频数据中为不同的讲话人添加标签。
音频数据有时会包含有多人讲话的样本。例如,电话通话音频通常包含两人或多人的声音。理想情况下,电话通话转录应包括谁在何时讲话的信息。
讲话人区分
Speech-to-Text 可以识别同一音频剪辑中的多名讲话人。向 Speech-to-Text 发送音频转录请求时,您可以加入一个参数,告知 Speech-to-Text 识别音频样本中的不同讲话人。这一功能称为讲话人区分,能够检测何时更换了讲话人,并按照系统在音频中检测到的不同声音数量添加标签。
在转录请求中启用讲话人区分时,Speech-to-Text 会尝试区分音频样本中包含的不同语音。转录结果会用分配给各个讲话人的编号标记每个词。同一名讲话人说出的字词标有相同的编号。转录结果可以包含的讲话人数量与 Speech-to-Text 能够在音频样本中唯一地标识的讲话人数量相同。
使用讲话人区分时,Speech-to-Text 会生成转录中提供的所有结果的连续聚合。其中每个结果都包含前一个结果中的字词。因此,最终结果中的 words
数组提供了完整且经过区分的转录结果。
查看语言支持页面,了解此功能是否支持您的语言。
在请求中启用讲话人区分功能
如需启用讲话人区分功能,您需要设置 RecognitionFeatures
中的 diarization_config
字段。您必须根据您希望转录内容中的讲话人数量设置 min_speaker_count
和 max_speaker_count
值。
Speech-to-Text 的讲话人区分功能支持以下所有语音识别方法:speech:recognize
和流式。
使用本地文件
以下代码段演示了如何使用本地文件在发送给 Speech-to-Text 的转录请求中启用讲话人区分功能。
协议
如需了解完整的详细信息,请参阅 speech:recognize
API 端点。
如需执行同步语音识别,请发出 POST
请求并提供相应的请求正文。以下示例展示了一个使用 curl
发出的 POST
请求。该示例使用 Google Cloud CLI 生成访问令牌。如需了解如何安装 gcloud CLI,请参阅快速入门。
curl -s -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://speech.googleapis.com/v2/projects/{project}/locations/{location}/recognizers/{recognizer}:recognize \ --data '{ "config": { "features": { "diarizationConfig": { "minSpeakerCount": 2, "maxSpeakerCount": 2 }, } }, "uri": "gs://cloud-samples-tests/speech/commercial_mono.wav" }' > speaker-diarization.txt
如果请求成功,服务器将返回一个 200 OK
HTTP 状态代码以及 JSON 格式的响应(该响应会保存到名为 speaker-diarization.txt
的文件中)。
{ "results": [ { "alternatives": [ { "transcript": "hi I'd like to buy a Chromecast and I was wondering whether you could help me with that certainly which color would you like we have blue black and red uh let's go with the black one would you like the new Chromecast Ultra model or the regular Chrome Cast regular Chromecast is fine thank you okay sure we like to ship it regular or Express Express please terrific it's on the way thank you thank you very much bye", "confidence": 0.92142606, "words": [ { "startOffset": "0s", "endOffset": "1.100s", "word": "hi", "speakerLabel": "2" }, { "startOffset": "1.100s", "endOffset": "2s", "word": "I'd", "speakerLabel": "2" }, { "startOffset": "2s", "endOffset": "2s", "word": "like", "speakerLabel": "2" }, { "startOffset": "2s", "endOffset": "2.100s", "word": "to", "speakerLabel": "2" }, ... { "startOffset": "6.500s", "endOffset": "6.900s", "word": "certainly", "speakerLabel": "1" }, { "startOffset": "6.900s", "endOffset": "7.300s", "word": "which", "speakerLabel": "1" }, { "startOffset": "7.300s", "endOffset": "7.500s", "word": "color", "speakerLabel": "1" }, ... ] } ], "languageCode": "en-us" } ] }
Go
如需了解如何安装和使用 Speech-to-Text 客户端库,请参阅 Speech-to-Text 客户端库。 如需了解详情,请参阅 Speech-to-Text Go API 参考文档。
如需向 Speech-to-Text 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Speech-to-Text 客户端库,请参阅 Speech-to-Text 客户端库。 如需了解详情,请参阅 Speech-to-Text Python API 参考文档。
如需向 Speech-to-Text 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。