IBM Cloud Docs
瞭解語音辨識結果

瞭解語音辨識結果

不論您使用的介面為何,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 及服務的 confidencefinal 欄位的值是 true,以指出這些結果不會變更。
  • result_index 欄位提供結果的唯一 ID。 此範例顯示具有無暫停之單一音訊檔的要求最終結果,且要求不包含其他任何參數。 因此,服務會傳回單一 result_index 欄位,其值為 0,這永遠是起始索引。

如果輸入音訊更複雜,或是要求包含了其他參數,則結果包含的資訊可能會多出許多。

alternatives 欄位

alternatives 欄位提供轉錄結果的陣列。 對於此要求,陣列只包含一個元素。

  • transcript 欄位提供轉錄的結果。
  • confidence 欄位是一個評分,指出服務在文字記錄中的信賴度,在此範例中超過 90%。

finalresult_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
  • keywordskeywords_threshold
  • max_alternatives
  • processing_metricsprocessing_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 指出猶豫標記。 產生猶豫標記的單字包括 aahahhmhmmhuhhuh-uhhumohhughuhuh-huhuh-ohuh-uhumum-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
    }
  ]
}

除非您的應用程式需要用到它們,否則可以安全地過濾掉文字記錄中的猶豫標記。

下一代模型的猶豫

對於下一代模型,服務會在所有轉錄結果中包括實際猶豫單字。 下一代模型將猶豫視為單字,因此猶豫可以出現在過渡期間結果、最終結果及其他欄位中,例如單字時間戳記的結果。 下一代模型不會產生猶豫標記,啟用智慧型格式化也不會導致從最終結果中移除猶豫。 不同的語言可以識別不同的猶豫單字:

  • 對於美式英文, 一般猶豫單字是 aahahhmhmmhuhhuh-uhhumohhughuhuh-huhuh-ohuh-uhumum-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
    

    服務不會將德文的名詞與前一代模型搭配使用。

標點符號

依預設,服務不會在回應文字記錄中插入標點符號。 您必須將您需要的任何標點符號新增至服務的結果中。

對於某些語言,您可以使用智慧型格式化,來指示服務用標點符號(例如逗點、句點、問號和驚嘆號)替代某些關鍵字字串。 如需相關資訊,請參閱智慧型格式化