取得語音辨識結果

參考文件 | 套件 (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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 立即確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 立即確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 71500000 20600000

第二個語句的總持續時間為 2.06 秒。 其在 7.15 到 9.21 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:07.150 --> 00:00:09.210)。

參考文件 | 套件 (Download) | GitHub 上的其他範例

在本操作指南中,您將了解如何使用語音辨識結果。

語音同步處理

您可以同步處理轉譯與音訊播放軌,無論是即時完成,還是使用預先錄製。

語音服務會傳回已辨識語音的時間偏差和持續時間。

  • 時間偏差:已辨識的音訊資料流時間偏差,以持續時間表示。 時間偏差是以刻度來測量的,從 0 (零) 刻度開始,與 SDK 所處理的第一個音訊位元組相關聯。 例如,當您開始辨識時,時間偏差就會開始,因為 SDK 這時會開始處理音訊資料流。 一個刻度代表一百毫微秒,即一千萬分之一秒。
  • 持續時間:要被辨識語句的持續時間。 刻度中的持續時間不包含前後的無聲時間。

單一語句的結尾會藉由聽取結束時的靜默來決定。 在語句完成之前,您不會取得最終辨識結果。 辨識中事件將提供在處理音訊串流時有可能變更的中繼結果。 已辨識的事件會在語句處理完成後提供最終的轉錄文字。

辨識中的位移和持續時間

透過 Recognizing 事件,您可以取得已辨識語音的位移和持續時間。 辨識正在進行時,無法取得每個字組的位移和持續時間。 每個 Recognizing 事件都附有對於目前為止語音辨識的文字估計。

已辨識的位移和持續時間

語句一經辨識後,您就可以取得已辨識語音的位移和持續時間。 透過 Recognized 事件,您也可以取得每個字組的位移和持續時間。 若想要求每個字組的位移和持續時間,您必須先設定對應的 SpeechConfig屬性,如下所示:

[speechConfig requestWordLevelTimestamps];

範例位移和持續時間

下表顯示了當說話者說出「歡迎來到應用數學課程 201」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移在整個 RecognizingRecognized 事件中都沒有變更。 不過,若要在 RecognizingRecognized 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 71500000 20600000

第二個語句的總持續時間為 2.06 秒。 其在 7.15 到 9.21 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:07.150 --> 00:00:09.210)。

參考文件 | 套件 (Download) | GitHub 上的其他範例

在本操作指南中,您將了解如何使用語音辨識結果。

語音同步處理

您可以同步處理轉譯與音訊播放軌,無論是即時完成,還是使用預先錄製。

語音服務會傳回已辨識語音的時間偏差和持續時間。

  • 時間偏差:已辨識的音訊資料流時間偏差,以持續時間表示。 時間偏差是以刻度來測量的,從 0 (零) 刻度開始,與 SDK 所處理的第一個音訊位元組相關聯。 例如,當您開始辨識時,時間偏差就會開始,因為 SDK 這時會開始處理音訊資料流。 一個刻度代表一百毫微秒,即一千萬分之一秒。
  • 持續時間:要被辨識語句的持續時間。 刻度中的持續時間不包含前後的無聲時間。

單一語句的結尾會藉由聽取結束時的靜默來決定。 在語句完成之前,您不會取得最終辨識結果。 辨識中事件將提供在處理音訊串流時有可能變更的中繼結果。 已辨識的事件會在語句處理完成後提供最終的轉錄文字。

辨識中的位移和持續時間

透過 Recognizing 事件,您可以取得已辨識語音的位移和持續時間。 辨識正在進行時,無法取得每個字組的位移和持續時間。 每個 Recognizing 事件都附有對於目前為止語音辨識的文字估計。

已辨識的位移和持續時間

語句一經辨識後,您就可以取得已辨識語音的位移和持續時間。 透過 Recognized 事件,您也可以取得每個字組的位移和持續時間。 若想要求每個字組的位移和持續時間,您必須先設定對應的 SpeechConfig屬性,如下所示:

[speechConfig requestWordLevelTimestamps];

範例位移和持續時間

下表顯示了當說話者說出「歡迎來到應用數學課程 201」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移在整個 RecognizingRecognized 事件中都沒有變更。 不過,若要在 RecognizingRecognized 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 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 事件之間維持不變,請勿依賴位移,因為最終結果可能不同。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 歡迎使用 17000000 5000000
RECOGNIZING 歡迎來到 17000000 6400000
RECOGNIZING 歡迎來到應用數 17000000 13600000
RECOGNIZING 歡迎來到應用數學 17000000 17200000
RECOGNIZING 歡迎來到應用數學課程 17000000 23700000
RECOGNIZING 歡迎來到應用數學課程 2 17000000 26700000
RECOGNIZING 歡迎來到應用數學課程 201 17000000 33400000
RECOGNIZED 歡迎來到應用數學課程 201。 17000000 34500000

第一個語句的總持續時間為 3.45 秒。 其在 1.7 到 5.15 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:01.700 --> 00:00:05.150)。

如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。

事件 Text 位移 (以刻度為單位) 持續時間 (以刻度為單位)
RECOGNIZING 確定 71500000 3100000
RECOGNIZING 好,現在 71500000 10300000
RECOGNIZING 現在讓我們來確定 71500000 14700000
RECOGNIZING 現在讓我們開始吧 71500000 18500000
RECOGNIZED 好,現在讓我們開始吧。 71500000 20600000

第二個語句的總持續時間為 2.06 秒。 其在 7.15 到 9.21 秒期間受到辨識,辨識從音訊資料流開始的位移 (00:00:07.150 --> 00:00:09.210)。

後續步驟