

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 启用发言者划分
<a name="conversation-diarization-med"></a>

要在 “ Amazon Transcribe 医疗” 中启用扬声器分区，请使用*扬声器日记法*。该功能使您能够在转录输出中看到患者所说的话和临床医生所说的话。

当你启用说话者日记功能时，M Amazon Transcribe edical 会用每个*说*话者的唯一标识符来标记每个说话者的话。*言语*是一种语音单位，通常用静默与其它言语隔开。在批量转录中，临床医生的言语可能会收到一个 `spk_0` 标签，而患者可能会收到一个 `spk_1` 标签。

如果一位发言者的言语与另一位发言者的言语重叠， Amazon Transcribe Medical 会按具体的开始时间在转录中对其进行排序。在输入音频中重叠的表达不会在转录输出中重叠。

当您使用批量转录作业或在实时音频流转录音频文件时，您可以启用发言者分类功能。

**Topics**
+ [在批量转录中启用发言者划分](conversation-diarization-batch-med.md)
+ [在实时音频流中启用发言者划分](conversation-diarization-streaming-med.md)

# 在批量转录中启用发言者划分
<a name="conversation-diarization-batch-med"></a>

您可以使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalTranscriptionJob.html) API 或 AWS 管理控制台，在批量转录作业中启用发言者划分。该功能使您能够在临床医生与患者对话中对每位说话者的文本进行划分，并确定谁在转录输出中说了什么。

## AWS 管理控制台
<a name="conversation-diarization-batch-med-console"></a>

要在转录作业中 AWS 管理控制台 使用启用说话者日记功能，请先启用音频识别，然后启用说话者分区。

1. 登录到 [AWS 管理控制台](https://console.aws.amazon.com/transcribe/)。

1. 在导航窗格的 “ Amazon Transcribe 医疗” 下，选择 “**转录作业**”。

1. 请选择**创建任务**。

1. 在**指定作业详细信息**页面上，提供有关您的转录作业的信息。

1. 选择**下一步**。

1. 启用**音频识别**。

1. 对于**音频识别类型**，请选择**发言者划分**。

1. 在**发言者人数上限**中，输入您认为将在音频文件中发言的最大发言者数量。

1. 选择**创建**。

## API
<a name="conversation-diarization-batch-med-api"></a>

**使用批量转录作业启用发言者划分 (API)**
+ 对于 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalTranscriptionJob.html) API，请指定以下内容。

  1. 对于 `MedicalTranscriptionJobName`，请指定在您 AWS 账户中是唯一的名称。

  1. 对于 `LanguageCode`，指定与音频文件中所用语言对应的语言代码。

  1. 在 `Media` 对象的 `MediaFileUri` 参数中，指定要转录的音频文件的名称。

  1. 对于 `Specialty`，请指定音频文件中说话的临床医生的医学专科。

  1. 对于 `Type`，请指定 `CONVERSATION`。

  1. 对于`OutputBucketName`，请指定用于 Amazon S3 存储转录结果的存储桶。

  1. 对于 `Settings` 对象，指定以下内容。

     1. `ShowSpeakerLabels` – `true`.

     1. `MaxSpeakerLabels` – 介于 2 和 10 之间的整数，表示音频中您认为在说话的发言者数量。

以下请求使用启动初级保健临床医生患者对话的批量转录作业，同时启用了说话者分区。 适用于 Python (Boto3) 的 AWS SDK 

```
from __future__ import print_function
import time
import boto3
transcribe = boto3.client('transcribe', 'us-west-2')
job_name = "my-first-transcription-job"
job_uri = "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac"
transcribe.start_medical_transcription_job(
    MedicalTranscriptionJobName = job_name,
    Media={
        'MediaFileUri': job_uri
    },
    OutputBucketName = 'amzn-s3-demo-bucket',
    OutputKey = 'my-output-files/', 
    LanguageCode = 'en-US',
    Specialty = 'PRIMARYCARE',
    Type = 'CONVERSATION',
    OutputBucketName = 'amzn-s3-demo-bucket',
Settings = {'ShowSpeakerLabels': True,
         'MaxSpeakerLabels': 2
         }
         )
while True:
    status = transcribe.get_medical_transcription_job(MedicalTranscriptionJobName = job_name)
    if status['MedicalTranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:
        break
    print("Not ready yet...")
    time.sleep(5)
print(status)
```

以下示例代码显示了启用发言者划分情况下的转录作业的转录结果。

```
{
    "jobName": "job ID",
    "accountId": "111122223333",
    "results": {
        "transcripts": [
            {
                "transcript": "Professional answer."
            }
        ],
        "speaker_labels": {
            "speakers": 1,
            "segments": [
                {
                    "start_time": "0.000000",
                    "speaker_label": "spk_0",
                    "end_time": "1.430",
                    "items": [
                        {
                            "start_time": "0.100",
                            "speaker_label": "spk_0",
                            "end_time": "0.690"
                        },
                        {
                            "start_time": "0.690",
                            "speaker_label": "spk_0",
                            "end_time": "1.210"
                        }
                    ]
                }
            ]
        },
        "items": [
            {
                "start_time": "0.100",
                "end_time": "0.690",
                "alternatives": [
                    {
                        "confidence": "0.8162",
                        "content": "Professional"
                    }
                ],
                "type": "pronunciation"
            },
            {
                "start_time": "0.690",
                "end_time": "1.210",
                "alternatives": [
                    {
                        "confidence": "0.9939",
                        "content": "answer"
                    }
                ],
                "type": "pronunciation"
            },
            {
                "alternatives": [
                    {
                        "content": "."
                    }
                ],
                "type": "punctuation"
            }
        ]
    },
    "status": "COMPLETED"
}
```

## AWS CLI
<a name="diarization-batch-cli"></a>

**转录全科临床医生与患者之间对话的音频文件 (AWS CLI)**
+ 运行以下代码。

  ```
                      
  aws transcribe start-transcription-job \
  --region us-west-2 \
  --cli-input-json file://example-start-command.json
  ```

  以下代码显示了 `example-start-command.json` 的内容。

  ```
  {
      "MedicalTranscriptionJobName": "my-first-med-transcription-job",       
       "Media": {
            "MediaFileUri": "s3://amzn-s3-demo-bucket/my-input-files/my-audio-file.flac"
        },
        "OutputBucketName": "amzn-s3-demo-bucket",
        "OutputKey": "my-output-files/", 
        "LanguageCode": "en-US",
        "Specialty": "PRIMARYCARE",
        "Type": "CONVERSATION",
        "Settings":{
            "ShowSpeakerLabels": true,
            "MaxSpeakerLabels": 2
          }
  }
  ```

# 在实时音频流中启用发言者划分
<a name="conversation-diarization-streaming-med"></a>

要对发言者进行分区并在实时流中标记他们的语音，请使用 AWS 管理控制台 或直播请求。发言者划分最适合流式转录中有两到五个发言者。尽管 M Amazon Transcribe edical 可以在一个直播中对五个以上的扬声器进行分区，但如果超过该数字，分区的准确性就会降低。

要启动 HTTP/2 请求，请使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalStreamTranscription.html) API。要启动 WebSocket 请求，请使用预签名 URI。URI 包含在应用程序和 Amazon Transcribe Medical 之间建立双向通信所需的信息。

## 在对着麦克风说话的音频中启用发言者划分（AWS 管理控制台）
<a name="conversation-diarization-console"></a>

您可以使用开始实时直播临床医生与患者的对话，或者开始对着麦克风实时说出的听写。 AWS 管理控制台 

1. 登录到 [AWS 管理控制台](https://console.aws.amazon.com/transcribe/)。

1. 在导航窗格中，为 “ Amazon Transcribe 医疗” 选择 “**实时转录**”。

1. 对于**音频输入类型**，选择要转录的医疗语音类型。

1. 对于**其它设置**，请选择**发言者划分**。

1. 选择**开始流式转录**以开始转录您的实时音频。

1. 对着麦克风说话。

## 在 HTTP/2 音频流中启用发言者划分
<a name="conversation-diarization-med-http2"></a>

要在医疗对话的 HTTP/2 音频流中启用发言者划分，请使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalStreamTranscription.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalStreamTranscription.html) API 并指定以下内容：
+ 对于 `LanguageCode`，指定与流式转录中所用语言对应的语言代码。有效值为 `en-US`。
+ 对于 `MediaSampleHertz`，请指定音频的采样率。
+ 对于 `Specialty`，指定提供者的医学专科。
+ `ShowSpeakerLabel` – `true`

有关设置 HTTP/2 音频流以转录医疗对话的更多信息，请参阅[设置 HTTP/2 音频流](streaming-setting-up.md#streaming-http2)。

## 在请求中启用扬声器分区 WebSocket
<a name="conversation-diarization-med-websocket"></a>

要使用 API 对 WebSocket 直播中的演讲者进行分区，请使用以下格式创建用于启动 WebSocket 请求的预签名 URI 并将其设置`show-speaker-label`为`true`。

```
GET wss://transcribestreaming.us-west-2.amazonaws.com:8443/medical-stream-transcription-websocket
?language-code=languageCode
&X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20220208%2Fus-west-2%2Ftranscribe%2Faws4_request
&X-Amz-Date=20220208T235959Z
&X-Amz-Expires=300
&X-Amz-Security-Token=security-token
&X-Amz-Signature=Signature Version 4 signature 
&X-Amz-SignedHeaders=host
&media-encoding=flac
&sample-rate=16000
&session-id=sessionId
&specialty=medicalSpecialty
&type=CONVERSATION
&vocabulary-name=vocabularyName
&show-speaker-label=boolean
```

以下代码显示了流式转录请求的截断示例响应。

```
{
  "Transcript": {
    "Results": [
      {
        "Alternatives": [
          {
            "Items": [
              {
                "Confidence": 0.97,
                "Content": "From",
                "EndTime": 18.98,
                "Speaker": "0",
                "StartTime": 18.74,
                "Type": "pronunciation",
                "VocabularyFilterMatch": false
              },
              {
                "Confidence": 1,
                "Content": "the",
                "EndTime": 19.31,
                "Speaker": "0",
                "StartTime": 19,
                "Type": "pronunciation",
                "VocabularyFilterMatch": false
              },
              {
                "Confidence": 1,
                "Content": "last",
                "EndTime": 19.86,
                "Speaker": "0",
                "StartTime": 19.32,
                "Type": "pronunciation",
                "VocabularyFilterMatch": false
              },
             ...
              {
                "Confidence": 1,
                "Content": "chronic",
                "EndTime": 22.55,
                "Speaker": "0",
                "StartTime": 21.97,
                "Type": "pronunciation",
                "VocabularyFilterMatch": false
              },
              ...
                "Confidence": 1,
                "Content": "fatigue",
                "EndTime": 24.42,
                "Speaker": "0",
                "StartTime": 23.95,
                "Type": "pronunciation",
                "VocabularyFilterMatch": false
              },
              {
                "EndTime": 25.22,
                "StartTime": 25.22,
                "Type": "speaker-change",
                "VocabularyFilterMatch": false
              },
              {
                "Confidence": 0.99,
                "Content": "True",
                "EndTime": 25.63,
                "Speaker": "1",
                "StartTime": 25.22,
                "Type": "pronunciation",
                "VocabularyFilterMatch": false
              },
              {
                "Content": ".",
                "EndTime": 25.63,
                "StartTime": 25.63,
                "Type": "punctuation",
                "VocabularyFilterMatch": false
              }
            ],
            "Transcript": "From the last note she still has mild sleep deprivation and chronic fatigue True."
          }
        ],
        "EndTime": 25.63,
        "IsPartial": false,
        "ResultId": "XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
        "StartTime": 18.74
      }
    ]
  }
}
```

Amazon Transcribe Medical 会根据自然的语音片段（例如说话者的变化或音频的暂停）来中断传入的音频流。转录将逐步返回到您的应用程序，每个响应包含更多转录的语音，直到整个片段被转录。前面的代码是完全转录的语音片段的截断示例。只有完全转录的语音片段才会显示发言者标签。

以下列表显示了流式转录输出中对象和参数的组织结构。

**`Transcript`**  
每个语音段都有自己的 `Transcript` 对象。

**`Results`**  
每个 `Transcript` 对象都有自己的 `Results` 对象。此对象包含 `isPartial` 字段。当其值为 `false` 时，返回的结果就是针对整个语音片段的。

**`Alternatives`**  
每个 `Results` 对象都有一个 `Alternatives` 对象。

**`Items`**  
每个 `Alternatives` 对象都有自己的 `Items` 对象，其中包含有关转录输出中每个单词和标点符号的信息。启用扬声器分区后，每个单词都有一个用于`Speaker`标注完全转录的语音片段的标签。 Amazon Transcribe Medical 使用此标签为直播中的每个发言者分配一个唯一的整数。值为 `speaker-change` 的 `Type` 参数表示一个人已停止说话，另一个人即将开始说话。

**`Transcript`**  
每个 Items 对象都包含一个转录的语音片段作为 `Transcript` 字段的值。

有关 WebSocket 请求的更多信息，请参阅[设置直 WebSocket 播](streaming-setting-up.md#streaming-websocket)。