你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

获取语音识别结果

参考文档 | 包 (NuGet) | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

此代码片段演示如何从 Recognizing 事件中获取偏移量和持续时间。

speechRecognizer.Recognizing += (object sender, SpeechRecognitionEventArgs e) =>
    {
        if (e.Result.Reason == ResultReason.RecognizingSpeech)
        {        
            Console.WriteLine(String.Format ("RECOGNIZING: {0}", e.Result.Text));
            Console.WriteLine(String.Format ("Offset in Ticks: {0}", e.Result.OffsetInTicks));
            Console.WriteLine(String.Format ("Duration in Ticks: {0}", e.Result.Duration.Ticks));
        }
    };

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

speechConfig.RequestWordLevelTimestamps();

此代码片段演示如何从 Recognized 事件中获取偏移量和持续时间。

speechRecognizer.Recognized += (object sender, SpeechRecognitionEventArgs e) =>
    {
        if (ResultReason.RecognizedSpeech == e.Result.Reason && e.Result.Text.Length > 0)
        {            
            Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
            Console.WriteLine(String.Format ("Offset in Ticks: {0}", e.Result.OffsetInTicks));
            Console.WriteLine(String.Format ("Duration in Ticks: {0}", e.Result.Duration.Ticks));
                        
            var detailedResults = e.Result.Best();
            if(detailedResults != null && detailedResults.Any())
            {
                // The first item in detailedResults corresponds to the recognized text.
                // This is not necessarily the item with the highest confidence number.
                var bestResults = detailedResults?.ToList()[0];
                Console.WriteLine(String.Format("\tConfidence: {0}\n\tText: {1}\n\tLexicalForm: {2}\n\tNormalizedForm: {3}\n\tMaskedNormalizedForm: {4}",
                    bestResults.Confidence, bestResults.Text, bestResults.LexicalForm, bestResults.NormalizedForm, bestResults.MaskedNormalizedForm));
                // You must set speechConfig.RequestWordLevelTimestamps() to get word-level timestamps.
                Console.WriteLine($"\tWord-level timing:");
                Console.WriteLine($"\t\tWord | Offset | Duration");
                Console.WriteLine($"\t\t----- | ----- | ----- ");

                foreach (var word in bestResults.Words)
                {
                    Console.WriteLine($"\t\t{word.Word} | {word.Offset} | {word.Duration}");
                }
            }
        }
    };

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | 包 (NuGet) | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

此代码片段演示如何从 Recognizing 事件中获取偏移量和持续时间。

speechRecognizer->Recognizing.Connect([](const SpeechRecognitionEventArgs& e)
    {
        cout << "Recognizing:" << e.Result->Text << std::endl;
        cout << "Offset in Ticks:" << e.Result->Offset() << std::endl;
        cout << "Duration in Ticks:" << e.Result->Duration() << std::endl;
    });

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

speechConfig->RequestWordLevelTimestamps();

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | 包 (Go) | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

此代码片段演示如何从 Recognizing 事件中获取偏移量和持续时间。

func recognizingHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognizing:", event.Result.Text)
    fmt.Println("Offset in Ticks:", event.Result.Offset)
    fmt.Println("Duration in Ticks:", event.Result.Duration)
}

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

speechConfig.RequestWordLevelTimestamps();

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

此代码片段演示如何从 Recognizing 事件中获取偏移量和持续时间。

speechRecognizer.recognizing.addEventListener((s, e) -> {
    System.out.println("RECOGNIZING: " + e.getResult().getText());
    System.out.println("Offset in Ticks: " + e.getResult().getOffset());
    System.out.println("Duration in Ticks: " + e.getResult().getDuration());
});

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

speechConfig.requestWordLevelTimestamps();

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | 包 (npm) | GitHub 上的其他示例 | 库源代码

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

此代码片段演示如何从 Recognizing 事件中获取偏移量和持续时间。

speechRecognizer.recognizing = function (s, e) {
    console.log("RECOGNIZING: " + e.result.text);
    console.log("Offset in Ticks: " + e.result.offset);
    console.log("Duration in Ticks: " + e.result.duration);
};

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

speechConfig.requestWordLevelTimestamps();

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | 包(下载) | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

[speechConfig requestWordLevelTimestamps];

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | 包(下载) | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

[speechConfig requestWordLevelTimestamps];

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

参考文档 | 包 (PyPi) | GitHub 上的其他示例

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

此代码片段演示如何从 Recognizing 事件中获取偏移量和持续时间。

def recognizing_handler(e : speechsdk.SpeechRecognitionEventArgs) :
    if speechsdk.ResultReason.RecognizingSpeech == e.result.reason and len(e.result.text) > 0 :
        print("Recognized: {}".format(result.text))
        print("Offset in Ticks: {}".format(result.offset))
        print("Duration in Ticks: {}".format(result.duration))

识别的偏移量和持续时间

识别语句后,即可获取已识别语音的偏移量和持续时间。 使用 Recognized 事件,还可以获取每个单词的偏移量和持续时间。 若要请求每个单词的偏移量和持续时间,首先必须设置相应的 SpeechConfig 属性,如下所示:

speech_config.request_word_level_timestamps()

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

本操作指南介绍如何使用语音识别结果。

语音同步

你可能想要将听录与音频轨道同步,无论是实时完成还是预录制的。

语音服务返回已识别语音的偏移量和持续时间。

  • 偏移量:已识别的音频流的偏移量,表示为持续时间。 偏移量以时钟周期为单位,从 0(零)时钟周期开始,与 SDK 处理的第一个音频字节相关联。 例如,偏移从开始识别时开始,因为那是 SDK 开始处理音频流的时间。 一个时钟周期表示一百纳秒,即一千万分之一秒。
  • 持续时间:正在识别的语句的持续时间。 时钟周期中的持续时间不包括尾随或前导静音。

单个语句的结束是通过在结束时倾听静音来确定的。 在语句完成之前,不会获得最终识别结果。 识别事件将提供在处理音频流时可能会更改的中间结果。 语句处理完成后,识别的事件将提供最终的转录文本。

识别偏移量和持续时间

你想要将字幕与音频轨道同步,无论是实时完成还是预先录制的。 使用 Recognizing 事件,可以获取正在识别的语音的偏移量和持续时间。 在识别过程中,每个单词的偏移量和持续时间不可用。 每个 Recognizing 事件都附带对目前已识别语音的文本估计内容。

例如,运行以下命令以获取已识别语音的偏移量和持续时间:

spx recognize --file caption.this.mp4 --format any --output each file - @output.each.detailed

由于设置了 @output.each.detailed 参数,因此输出包含以下列标题:

audio.input.id  event   event.sessionid result.reason   result.latency  result.text     result.json

result.json 列中,可以找到包括 RecognizingRecognized 事件的偏移量和持续时间的详细信息:

{
	"Id": "492574cd8555481a92c22f5ff757ef17",
	"RecognitionStatus": "Success",
	"DisplayText": "Welcome to applied Mathematics course 201.",
	"Offset": 1800000,
	"Duration": 30500000
}

有关详细信息,请参阅语音 CLI 数据存储配置输出选项

示例偏移量和持续时间

下表显示了说话人说“欢迎来到应用数学课程 201”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 RecognizingRecognized 事件中都不会改变。 但是,不要依赖偏移量在 RecognizingRecognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 欢迎 17000000 5000000
正在识别 欢迎来到 17000000 6400000
正在识别 欢迎来到应用数学 17000000 13600000
正在识别 欢迎来到应用数学 17000000 17200000
正在识别 欢迎来到应用数学课程 17000000 23700000
正在识别 欢迎来到应用数学课程 2 17000000 26700000
正在识别 欢迎来到应用数学课程 201 17000000 33400000
已识别 欢迎来到应用数学课程 201。 17000000 34500000

第一个语句的总持续时间为 3.45 秒。 该语句在语音识别开始偏移的 1.7 到 5.15 秒间被识别 (00:00:01.700 --> 00:00:05.150)。

如果说话人继续说“让我们开始”,则从识别的音频流的开头到新的语句的开头计算新的偏移量。 下表显示了在前一个语句结束两秒后讲出的语句的潜在偏移量和持续时间。

事件 文本 偏移量(以时钟周期为单位) 持续时间(以时钟周期为单位)
正在识别 OK 71500000 3100000
正在识别 现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

第二个语句的总持续时间为 2.06 秒。 该语句在语音识别开始偏移的 7.15 到 9.21 秒间被识别 (00:00:07.150 --> 00:00:09.210)。

后续步骤