關鍵字辨識及替代字組

IBM Watson® Speech to Text 服務可在其轉錄結果中識別使用者指定的關鍵字。 它也可以建議與謄本字詞聲音相似的替代字詞。 在這兩種情況下,關鍵字和替代字都必須符合使用者指定的置信度。

關鍵字辨識

keywords 和 keywords_threshold 參數僅支援上一代機型,不支援下一代機型。

關鍵字辨識特性會偵測文字記錄中的指定字串。 服務可以多次辨識出相同的關鍵字,並報告每次出現。 服務只會在最終結果中辨識關鍵字,而不會在過渡期間結果中辨識關鍵字。 依預設,服務不會執行關鍵字辨識。

若要使用關鍵字辨識,您必須指定下列兩個參數:

  • 使用 keywords 參數指定要辨識的字串陣列。 如果您省略參數或指定空的陣列,則服務不會辨識任何關鍵字。 關鍵字字串可以包含多個記號。 例如,關鍵字 Speech to Text 有三個記號。 關鍵字比對不區分大小寫,因此 Speech to Text 實際上相當於 speech to text。

    對於美式英文,服務會將每個關鍵字正規化,以符合口說與書寫的字串。 例如,它會將數字正規化,以符合它們口說和書寫時的方式。 對於其他語言,關鍵字必須指定為口說方式。

  • 使用 keywords_threshold 參數,針對關鍵字相符項指定 0.0 到 1.0 之間的機率。 臨界值指出服務必須具備的信賴水準下界,如此字組才會符合關鍵字。 只有在關鍵字的信賴度大於或等於指定的臨界值時,才會在文字記錄中辨識該關鍵字。

    指定小的臨界值可能會產生許多相符項。 如果您指定臨界值,則也必須指定一個以上的關鍵字。 省略參數不會傳回任何相符項。

下列限制適用於關鍵字辨識:

  • 您在單一要求中最多可以辨識 1000 個關鍵字。
  • 單一關鍵字的長度上限為 1024 個字元。 雙位元組語言的有效長度上限可能較短。
  • 大部分 HTTP 伺服器及 Proxy 對於要求的參數會強制實施 8 KB 的限制。 辨識非常大量的關鍵字或許多冗長的關鍵字,可能會超出此限制。 如果您需要比對更多關鍵字,請考慮使用多部分 HTTP 要求。

在識別音訊串流中的關鍵字時,關鍵字辨識是必要的。 您無法透過處理最終文字記錄來識別關鍵字,因為文字記錄代表服務對於輸入音訊的最佳解碼結果。 它不包含信賴分數較低但可能表示有興趣字組的記號。 因此,在用戶端上將文字處理工具套用至文字記錄時,可能不會識別關鍵字。 需要較豐富的解碼結果表示法,而該表示法只能在伺服器上使用。

關鍵字辨識結果

服務會在 keywords_result 欄位中傳回結果,該欄位是 results 陣列的元素。 keywords_result 欄位是可列舉內容的字典或聯想陣列。 每一個內容由指定的關鍵字識別,並包含物件的陣列。 服務會針對它為關鍵字找到的每個相符項,傳回一個陣列元素。 每個相符項的物件都包含下列欄位:

  • normalized_text 是指定的關鍵字,它已正規化為符合輸入音訊的口說詞組。
  • start_time 是相符項的開始時間(秒)。
  • end_time 是相符項的結束時間(秒)。
  • confidence 是服務對於相符項能代表指定關鍵字的信賴度。 信賴度必須至少與指定臨界值一樣大,才會包含在結果中。

服務找不到相符項的關鍵字會從陣列中省略。 在下列情況下,可能找不到關鍵字:

  • 音訊純粹不包含關鍵字。 缺少關鍵字是最明顯的說明。

  • 臨界值設定太高。 服務可能識別出關鍵字,但信賴水準較低,在此情況下它會從結果中省略相符項。

  • 包含多個記號的關鍵字字串(例如 Speech to Text)說出時在其記號之間有太多靜音。 當服務轉錄音訊時,會將串流切成一系列的區塊。 每個區塊代表連續的音訊片段,其靜音間隔不會超過半秒鐘。 它會建構由這些區塊組成的結果物件陣列。

    只有在下列情況下,服務才會符合多記號關鍵字:

    • 關鍵字的記號位於相同的區塊中。
    • 記號是相鄰的,或者中間隔開的間隙不超過 0.1 秒。

    在後者的情況下,簡短的填充語或非詞法語句,例如「uhm」或「well」,可以位於關鍵字的兩個標記之間。 在這種情況下,上一代的模型可以在轉錄本的這個位置插入一個猶豫標記。 下一代模型將實際的遲疑包含在轉錄結果中。 如需詳細資訊,請參閱 語音遲疑和遲疑標記。

關鍵字辨識範例

下面的示例请求将 keywords 参数设置为由三个字符串组成的 URL 编码数组 (colorado, tornado, 和 tornadoes),并将 keywords_threshold 参数设置为 0.5:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"

該服務可尋找符合條件的 colorado 和 tornadoes:

{
  "result_index": 0,
  "results": [
    {
      "keywords_result": {
        "colorado": [
          {
            "normalized_text": "Colorado",
            "start_time": 4.94,
            "confidence": 0.91,
            "end_time": 5.62
          }
        ],
        "tornadoes": [
          {
            "normalized_text": "tornadoes",
            "start_time": 1.52,
            "confidence": 1.0,
            "end_time": 2.15
          }
        ]
      },
      "alternatives": [
        {
          "confidence": 0.96,
          "transcript": "several tornadoes touch down as a line of
severe thunderstorms swept through Colorado on Sunday "
        }
      ],
      "final": true
    }
  ]
}

替代字組

word_alternatives_threshold 參數僅支援上一代機型,不支援下一代機型。

詞彙替代品特徵(也稱為混淆網路 )報告輸入音訊中詞彙聲音類似替代品的假設。 例如,Austin 字組可能是音訊字組的最佳假設。 但 Boston 這個字組是相同時間間隔內的另一個可能假設。 假設會分享共同的開始和結束時間,但會有不同的拼字,而且通常有不同的信賴分數。

依預設,服務不會報告替代字組。 為了指出您想要接收替代項目假設,請使用 word_alternatives_threshold 參數,以指定 0.0 與 1.0 之間的機率。 臨界值指出服務對於假設必須具備的信賴水準下界,如此才會將假設傳回作為替代字組。 只有在假設的信賴度大於或等於指定的臨界值時,才會傳回該假設。

您可以將替代字組想成文字記錄的時間表,該文字記錄被切成較小的間隔,或是匣子。 每個匣子可以有一個以上的假設,它們具有不同的拼字和信賴度。 word_alternatives_threshold 參數控制服務傳回的結果密度。 指定小的臨界值可能會產生許多假設。

替代字組結果

服務會在 word_alternatives 欄位中傳回結果,該欄位是 results 陣列的元素。 word_alternatives 欄位是物件的陣列,每個物件都提供替代字組的下列欄位:

  • start_time 指出針對其傳回假設的字組,在輸入音訊中開始的時間(以秒為單位)。
  • end_time 指出針對其傳回假設的字組,在輸入音訊中結束的時間(以秒為單位)。
  • alternatives 是假設物件的陣列。 每個物件都包含 confidence,它指出服務對於假設的信賴分數;物件也包含 word,它會識別假設。 信賴度必須至少與指定臨界值一樣大,才會包含在結果中。 服務會依信賴度排序替代項目。

替代字組範例

下列要求範例會將 word_alternatives_threshold 指定為相當低的 0.10。 簡單的輸入音訊包含具有同音而不同可能聲學解釋的常見字組。

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"

由於低臨界值,服務會針對部分字組傳回多個假設和信賴分數,以及所有字組的開始和結束時間。 最終文字記錄會正確地辨識輸入音訊。

{
   "result_index": 0,
   "results": [
      {
         "final": true,
         "alternatives": [
            {
               "transcript": "yes I ate that tuna ",
               "confidence": 0.82
            }
         ],
         "word_alternatives": [
            {
               "start_time": 0.0,
               "end_time": 0.31,
               "alternatives": [
                  {
                     "word": "yes",
                     "confidence": 1.0
                  }
               ]
            },
            {
               "start_time": 0.31,
               "end_time": 0.46,
               "alternatives": [
                  {
                     "word": "I",
                     "confidence": 1.0
                  }
               ]
            },
            {
               "start_time": 0.46,
               "end_time": 0.63,
               "alternatives": [
                  {
                     "word": "ate",
                     "confidence": 0.89
                  },
                  {
                     "word": "eat",
                     "confidence": 0.11
                  }
               ]
            },
            {
               "start_time": 0.63,
               "end_time": 0.77,
               "alternatives": [
                  {
                     "word": "that",
                     "confidence": 0.72
                  },
                  {
                     "word": "the",
                     "confidence": 0.27
                  }
               ]
            },
            {
               "start_time": 0.77,
               "end_time": 1.2,
               "alternatives": [
                  {
                     "word": "tuna",
                     "confidence": 0.94
                  }
               ]
            }
         ]
      }
   ]
}