获取语音识别结果

参考文档 | Package (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(e.result.text))
        print("Offset in Ticks: {}".format(e.result.offset))
        print("Duration in Ticks: {}".format(e.result.duration))

识别出的偏移量和持续时间

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

speech_config.request_word_level_timestamps()

示例偏移量和持续时间

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 71500000 3100000
正在识别 好的,现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

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

参考文档 | Package (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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 71500000 3100000
正在识别 好的,现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

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

参考文档 | Package (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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 71500000 3100000
正在识别 好的,现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

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

参考文档 | Package (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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 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 列中,可以找到包括 Recognizing 和 Recognized 事件的偏移量和持续时间的详细信息:

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

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

示例偏移量和持续时间

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 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”时的潜在偏移量和持续时间(以时钟周期为单位)。在本例中,偏移量在 Recognizing 和 Recognized 事件中都不会改变。 但是,不要依赖偏移量在 Recognizing 和 Recognized 事件之间保持不变,因为最终结果可能不同。

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 欢迎 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)。

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

事件 文本 偏移量(以滴答为单位) 持续时间(以刻度为单位)
正在识别 好的 71500000 3100000
正在识别 好的,现在 71500000 10300000
正在识别 现在,让我们 71500000 14700000
正在识别 现在,让我们开始吧 71500000 18500000
已识别 现在,让我们开始吧。 71500000 20600000

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

后续步骤