取得語音辨識結果
參考文件 | 套件 (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
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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
事件都附有對於目前為止語音辨識的文字估計。
此程式碼片段示範了如何從 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
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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
事件都附有對於目前為止語音辨識的文字估計。
已辨識的位移和持續時間
語句一經辨識後,您就可以取得已辨識語音的位移和持續時間。 透過 Recognized
事件,您也可以取得每個字組的位移和持續時間。 若想要求每個字組的位移和持續時間,您必須先設定對應的 SpeechConfig
屬性,如下所示:
[speechConfig requestWordLevelTimestamps];
範例位移和持續時間
下表顯示了當說話者說出「歡迎來到應用數學課程 201」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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
事件都附有對於目前為止語音辨識的文字估計。
已辨識的位移和持續時間
語句一經辨識後,您就可以取得已辨識語音的位移和持續時間。 透過 Recognized
事件,您也可以取得每個字組的位移和持續時間。 若想要求每個字組的位移和持續時間,您必須先設定對應的 SpeechConfig
屬性,如下所示:
[speechConfig requestWordLevelTimestamps];
範例位移和持續時間
下表顯示了當說話者說出「歡迎來到應用數學課程 201」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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
資料行中,您可以針對包含 Recognizing
和 Recognized
事件,找到包含其位移和持續時間的詳細資料:
{
"Id": "492574cd8555481a92c22f5ff757ef17",
"RecognitionStatus": "Success",
"DisplayText": "Welcome to applied Mathematics course 201.",
"Offset": 1800000,
"Duration": 30500000
}
如需詳細資訊,請參閱語音 CLI 資料存放區設定和輸出選項。
範例位移和持續時間
下表顯示了當說話者說出「歡迎來到應用數學課程 201」時,潛在的位移和持續時間 (以刻度為單位)。在此範例中,位移不會在整個 Recognizing
和 Recognized
事件中變更。 不過,若要在 Recognizing
和 Recognized
事件之間維持不變,請勿依賴位移,因為最終結果可能不同。
Event | 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)。
如果說話者繼續說「讓我們開始吧」,則會針對從開始辨識音訊資料流到新語句的開頭,計算新的位移。 下表顯示了一個語句的潛在位移和持續時間,該語句開始於上一個語句結束後的兩秒。
Event | 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)。