瞭解語音辨識結果
不論您使用的介面為何,IBM Watson® Speech to Text 服務都會傳回轉錄結果,以反映您指定的參數。 服務會以 UTF-8 字集傳回所有 JSON 回應內容。
基本轉錄回應
對於 提出語音辨識要求 中的範例,服務會傳回下列回應。 範例只會傳遞音訊檔及其內容類型。 音訊會講出單一句子,並且在字組之間沒有顯著的暫停。
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.96,
"transcript": "several tornadoes touch down as a line of severe thunderstorms swept through Colorado on Sunday "
}
],
"final": true
}
]
}
服務會傳回 SpeechRecognitionResults
物件,這是最上層回應物件。 對於這些簡單的要求,物件包含了一個 results
欄位和一個 result_index
欄位:
results
欄位提供轉錄結果的相關資訊陣列。 在此範例中,alternatives
欄位包含結果中的transcript
及服務的confidence
。final
欄位的值是true
,以指出這些結果不會變更。result_index
欄位提供結果的唯一 ID。 此範例顯示具有無暫停之單一音訊檔的要求最終結果,且要求不包含其他任何參數。 因此,服務會傳回單一result_index
欄位,其值為0
,這永遠是起始索引。
如果輸入音訊更複雜,或是要求包含了其他參數,則結果包含的資訊可能會多出許多。
alternatives 欄位
alternatives
欄位提供轉錄結果的陣列。 對於此要求,陣列只包含一個元素。
transcript
欄位提供轉錄的結果。confidence
欄位是一個評分,指出服務在文字記錄中的信賴度,在此範例中超過 90%。
final
和 result_index
欄位符合這些欄位的意義。
服務的內部變更和改進可能會影響文字記錄和信任評分。 例如,可以改進語音辨識,以傳回更精確的轉錄結果。 同樣地,文字記錄和字組信賴分數可能會因語音辨識改善而略有變更。 這些變化預計不大,但不會預期文字記錄和信任評分在一段時間內保持不變。
final 欄位
final
欄位指出文字記錄是否顯示最終轉錄結果:
- 對於最終結果(保證不會變更),此欄位是
true
。 服務不會針對最終結果傳送進一步更新。 - 對於過渡期間結果(可能會變更),此欄位是
false
。 如果您搭配使用interim_results
參數與 WebSocket 介面,則在轉錄音訊時,服務會以多個results
欄位的形式傳回不斷演變的假設。 對於過渡期間結果,final
欄位一律為false
,且一律省略confidence
欄位。
如需使用 WebSocket 介面來取得具有大型語音模型、先前及下一代模型的過渡期間結果的相關資訊,請參閱下列主題:
result_index 欄位
result_index
欄位提供對於該要求而言唯一的結果 ID。 如果您要求過渡期間結果,則服務會針對輸入音訊的發展中假設傳送多個 results
欄位。 相同音訊的過渡期間結果索引一律會有相同的值,相同音訊的最終結果也是一樣。
相同的索引也可以用於單一要求的多個最終結果。 不論您是否要求過渡期間結果,如果您的音訊包括暫停或長時間靜音,則服務可以傳回具有相同索引的多個最終結果。 如需相關資訊,請參閱暫停與靜音。
您收到任何音訊的最終結果之後,服務就不會針對要求的其餘部分以該索引傳送任何進一步的結果。 任何進一步結果的索引會增加 1。
如果您的音訊產生多個最終結果,請連結最終結果的 transcript
元素,以組合音訊的完整轉錄。 以您接收結果的順序來組合結果。 當您組合完整的最終文字記錄時,您可以忽略 final
欄位為 false
的過渡期間結果。
其他回應內容
許多語音辨識參數會影響服務回應的內容。 部分參數可能導致服務傳回多個轉錄結果:
end_of_phrase_silence_time
interim_results
split_transcript_at_phrase_end
部分參數可以修改文字記錄的內容:
profanity_filter
redaction
smart_formatting
其他參數可以將更多資訊新增至結果:
audio_metrics
keywords
及keywords_threshold
max_alternatives
processing_metrics
及processing_metrics_interval
speaker_labels
timestamps
word_alternatives_threshold
word_confidence
暫停與靜音
服務傳回結果的方式取決於您用於語音辨識的介面和模型,以及您傳遞給服務的音訊。 依預設,服務會將整個音訊串流轉錄為單一話語,並傳回所有音訊的單一最終結果。 不過,服務可能會傳回多個最終結果,以回應下列條件:
- 音訊包含口語單字或片語之間的暫停或延伸靜音。 對於大部分語言,服務用來判定個別最終結果的預設暫停間隔為 0.8 秒。 若為中文,預設間隔為 0.6 秒。 您可以使用
end_of_phrase_silence_time
參數來變更暫停間隔的持續時間。 如需相關資訊,請參閱詞組結尾的靜音時間。 - 對於前一個產生模型, 話語達到兩分鐘上限。 服務會在連續處理兩分鐘之後,將文字記錄分割成多個最終結果。
下列範例顯示來自 HTTP 介面及 WebSocket 介面的兩個最終結果的回應。 在兩個案例中都使用相同的輸入音訊。 音訊會說出詞組 "one two three four five six",並且在 "three" 和 "four" 兩個字組之間有一秒鐘的暫停。 這些範例使用預設暫停間隔來進行語音辨識。
-
對於 HTTP 介面, 服務一律會傳送單一
SpeechRecognitionResults
物件。alternatives
陣列針對每個最終結果都有個別的元素。 回應具有單一result_index
欄位,其值為0
。{ "result_index": 0, "results": [ { "alternatives": [ { "confidence": 0.99, "transcript": "one two three " } ], "final": true }, { "alternatives": [ { "confidence": 0.99, "transcript": "four five six " } ], "final": true } ] }
-
對於 WebSocket 介面, 服務會傳送與前一個範例相同的結果。 回應包括單一
SpeechRecognitionResults
物件,alternatives
陣列針對每一個最終結果具有個別元素,且回應具有值為0
的單一result_index
欄位。{ "result_index": 0, "results": [ { "alternatives": [ { "confidence": 0.99, "transcript": "one two three " } ], "final": true }, { "alternatives": [ { "confidence": 0.99, "transcript": "four five six " } ], "final": true } ] }
使用 WebSocket 介面,過渡期間結果的回應會包含更多 JSON 物件。 如需使用 WebSocket 介面來取得具有大型語音模型、先前及下一代模型的過渡期間結果的相關資訊,請參閱下列主題:
串流音訊中 30 秒的靜音可能會導致閒置逾時。 如需相關資訊,請參閱逾時。
語音猶豫和猶豫標記
演講通常包括猶豫或口頭暫停,這也被稱為不流暢。 當使用者在說話時插入 "uhm"、"uh"、"hmm" 及相關的非詞彙話語時,會發生猶豫。 對於大型語音模型、前一代和下一代模型,服務會以不同方式處理猶豫。
上一代模型的猶豫
對於前一個產生模型,服務在大部分語言的轉錄結果中包括猶豫標記。 不同的語言可以使用不同的猶豫標記,或完全不表示猶豫:
- 對於美式英文, 由記號
%HESITATION
指出猶豫標記。 產生猶豫標記的單字包括aah
、ah
、hm
、hmm
、huh
、huh-uh
、hum
、ohh
、ugh
、uh
、uh-huh
、uh-oh
、uh-uh
、um
及um-hum
。 - 對於日文, 猶豫標記通常以
D_
開頭。 - 若為西班牙文,服務不會產生猶豫標記。
下列範例顯示美式英文文字記錄的記號 %HESITATION
:
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.99,
"transcript": ". . . that %HESITATION that's a . . ."
}
],
"final": true
}
]
}
猶豫標記可以在過渡期間和最終結果中出現。 啟用智慧型格式化可防止猶豫標記出現在美式英文的最終結果中。 如需相關資訊,請參閱智慧型格式化。
猶豫標記也可能出現在文字記錄的其他欄位。 例如,如果您要求文字記錄之個別字組的字組時間戳記,則服務會報告每個猶豫標記的開始和結束時間。
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"timestamps": [
. . .
[
"that",
7.31,
7.69
],
[
"%HESITATION",
7.69,
7.98
],
[
"that's",
7.98,
8.41
],
[
"a",
8.41,
8.48
],
. . .
],
"confidence": 0.99,
"transcript": ". . . that %HESITATION that's a . . ."
}
],
"final": true
}
]
}
除非您的應用程式需要用到它們,否則可以安全地過濾掉文字記錄中的猶豫標記。
下一代模型的猶豫
對於下一代模型,服務會在所有轉錄結果中包括實際猶豫單字。 下一代模型將猶豫視為單字,因此猶豫可以出現在過渡期間結果、最終結果及其他欄位中,例如單字時間戳記的結果。 下一代模型不會產生猶豫標記,啟用智慧型格式化也不會導致從最終結果中移除猶豫。 不同的語言可以識別不同的猶豫單字:
- 對於美式英文, 一般猶豫單字是
aah
、ah
、hm
、hmm
、huh
、huh-uh
、hum
、ohh
、ugh
、uh
、uh-huh
、uh-oh
、uh-uh
、um
及um-hum
。 並非所有這些猶豫的話都可能出現在文字記錄中。 - 若為日文, 猶豫單字通常由半寬字元組成,例如
ア
、アノー
、ウーン
、エート
、マ
、テ
、マ
及ンート
。 部分猶豫可能被辨識為全寬字元。
若要增加在回應中看到猶豫的可能性,您可以使用自訂語言模型。 在自訂模型中,新增包含猶豫的語料庫,或建立其音效類似的自訂字組,以擷取使用者說出不流利的方式。 如需自訂語言模型的相關資訊,請參閱 建立自訂語言模型。
下列範例顯示美國英文文字記錄中的猶豫 "uhm":
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.99,
"transcript": ". . . that uhm that's a . . ."
}
],
"final": true
}
]
}
大寫
對於大部分的語言,服務不會在回應文字記錄中使用大寫。 如果大寫對您的應用程式而言非常重要,您必須將每一句的第一個字組以及適合大寫的任何其他詞彙都大寫。
服務只會將自動大寫套用至下列語言和模型。 不論您是否使用智慧型格式化,服務一律會套用此大寫。
-
對於美式英文前一代模型, 服務會將許多適當的名詞大寫。 例如,服務會針對詞組 barack obama grubed from columbia university傳回下列文字稿:
Barack Obama graduated from Columbia University
此服務不會將美式英文的適當名詞與下一代模型搭配使用。
-
對於德國下一代模型, 服務會將許多名詞大寫。 例如,服務會傳回詞組 er braucht erst einen neuen eintrag ins vokabular punkt的下列文字記錄:
er braucht erst einen neuen Eintrag ins Vokabular Punkt
服務不會將德文的名詞與前一代模型搭配使用。
標點符號
依預設,服務不會在回應文字記錄中插入標點符號。 您必須將您需要的任何標點符號新增至服務的結果中。
對於某些語言,您可以使用智慧型格式化,來指示服務用標點符號(例如逗點、句點、問號和驚嘆號)替代某些關鍵字字串。 如需相關資訊,請參閱智慧型格式化。