定型並測試資料集

在自訂語音專案中,您可以上傳數據集以進行定型、定性檢查和量化測量。 本文涵蓋可用於自定義語音的定型和測試數據類型。

您用來測試和定型自定義模型的文字和音訊應該包含一組不同說話者和您想要模型辨識的案例範例。 當您收集自定義模型測試和定型的數據時,請考慮這些因素:

  • 包含文字和音訊數據,以涵蓋使用者在與模型互動時所做的語言語句種類。 例如,會引發和降低溫度的模型,需要針對人員可能提出要求這類變更的語句進行定型。
  • 包含您想要模型辨識的所有語音變異數。 許多因素可能會改變語音,包括口音、方言、語言混合、年齡、性別、語音音調、壓力水準和一天中的時間。
  • 包含來自不同環境的範例,例如室內、戶外和道路噪音,其中會使用您的模型。
  • 使用生產系統使用的硬體裝置錄製音訊。 如果您的模型必須識別在不同品質的裝置上錄製的語音,您提供的音訊數據來定型模型也必須代表這些不同的案例。
  • 讓數據集保持多樣化且具有專案需求的代表性。 您可以稍後將更多數據新增至模型。
  • 只包含模型需要轉譯的數據。 包含不在自定義模型辨識需求中的數據,可能會整體損害辨識品質。

資料類型

下表列出可接受的數據類型、應使用每個數據類型,以及建議的數量。 並非每個數據類型都需要建立模型。 數據需求會根據您要建立測試或定型模型而有所不同。

資料類型 用於測試 建議用於測試 用於定型 建議用於訓練
僅限音訊 是(視覺檢查) 5 個以上的音訊檔案 是 (預覽版)en-US 1-20 小時的音訊
音訊 + 人為標記的文字記錄 是(正確性評估) 0.5-5 小時的音訊 Yes 1-20 小時的音訊
純文本 No 不適用 Yes 1-200 MB 的相關文字
結構化文字 No 不適用 Yes 最多 10 個課程,最多 4,000 個專案,最多 50,000 個訓練句子
發音 No 不適用 Yes 1 KB 到 1 MB 的發音文字
顯示格式 No 不適用 Yes ITN 最多 200 行,1,000 行用於重寫,1,000 行用於粗話篩選

使用純文字或結構化文字進行定型通常會在幾分鐘內完成。

提示

從純文字數據或結構化文字數據開始。 此數據將改善特殊詞彙和片語的辨識。 使用文字進行定型的速度比使用音訊定型快得多(分鐘與天)。

從一組符合您模型使用語言、原音和硬體的範例數據開始。 小型代表性數據的數據集可以在您投資收集大型數據集以進行定型之前,先公開問題。 如需範例自定義語音數據,請參閱 此 GitHub 存放庫

如果您使用音訊數據來定型自定義模型,請選擇具有專用硬體的語音資源區域來定型音訊數據。 如需詳細資訊,請參閱 regions 數據表中的腳註。 在具有自定義語音定型專用硬體的區域,語音服務會使用最多 20 小時的音訊訓練數據,而且每天可以處理大約 10 小時的數據。 在其他區域中,語音服務最多會使用 8 小時的音訊資料,且每天處理大約 1 小時的資料。 定型模型之後,如有需要,您可使用 Models_CopyTo REST API 將模型複製到另一個區域。

依案例考慮數據集

在案例子集上定型的模型,只能在這些案例中順利執行。 請仔細選擇代表您需要自定義模型辨識之案例完整範圍的數據。 下表顯示一些語音辨識案例需要考慮的數據集:

案例 純文字數據和結構化文字數據 音訊 + 人為標記的文字記錄 具有發音的新單字
話務中心 營銷文件、網站、與客服中心活動相關的產品評論 由人類轉譯的通話中心通話 具有模棱兩可發音的詞彙(請參閱 上一節中的 Xbox 範例)
語音助理 使用各種命令和實體組合的句子清單 錄製的語音將命令讀入裝置,轉譯為文字 具有獨特發音的名稱(電影、歌曲、產品)
聽寫 寫入的輸入,例如立即訊息或電子郵件 類似上述範例 類似上述範例
影片隱藏式輔助字幕 電視節目腳本、電影、營銷內容、影片摘要 影片的確切文字記錄 類似上述範例

若要協助判斷要用來解決問題的數據集,請參閱下表:

使用案例 資料類型
改善產業特定詞彙和文法的辨識精確度,例如醫學術語或IT術語。 純文字或結構化文字數據
定義具有非標準發音的單字或字詞的注音和顯示形式,例如產品名稱或縮寫。 結構化文字中的發音數據或語音發音
改善說話樣式、輔色或特定背景雜訊的辨識精確度。 音訊 + 人為標記的文字記錄

用於定型或測試的音訊 + 人為標記文字記錄數據

您可以針對定型和測試目的使用音訊 + 人為標記的文字記錄數據。 您必須提供人為標記的轉譯(逐字字)進行比較:

  • 改善聲場層面,例如輕微的輔色、說話風格和背景噪音。
  • 若要測量 Microsoft 語音對文字精確度的精確度,它會處理您的音訊檔案。

如需支援使用音訊數據定型的基底模型清單,請參閱 語言支援。 即使基底模型確實支援使用音訊數據的定型,服務可能只使用音訊的一部分。 它仍然使用所有文字記錄。

重要

如果基底模型不支援使用音訊數據進行自定義,則只會使用轉譯文字進行定型。 如果您切換到支援使用音訊數據自定義的基底模型,定型時間可能會從數小時增加到數天。 當您切換至區域中的基底模型,而不需要專用硬體進行定型時,定型時間的變更最為明顯。 如果不需要音訊數據,您應該將其移除以減少定型時間。

如果音訊來自目標使用案例,則具有人為標籤文字記錄的音訊提供最大的精確度改進。 範例必須涵蓋語音的完整範圍。 例如,零售商店的客服中心會在夏季獲得泳裝和太陽鏡的最多通話。 請確定您的範例包含您想要偵測之語音的完整範圍。

請考慮下列詳細資料:

  • 如果音訊對於人類來說也很難理解,使用音訊進行訓練會帶來最大的好處。 在大部分情況下,您應該只使用相關的文字來開始定型。
  • 如果您使用其中一種最常使用的語言,例如美式英文,則不太可能需要使用音訊數據來定型。 針對這類語言,基底模型在大部分案例中都已提供良好的辨識結果,因此可能足以使用相關文字進行定型。
  • 自定義語音只能擷取文字內容,以減少替代錯誤,而不是插入或刪除錯誤。
  • 避免包含轉譯錯誤的範例,但確實包含音訊品質的多樣性。
  • 避免與問題網域無關的句子。 不相關的句子可能會損害您的模型。
  • 當文字記錄品質不同時,您可以複製特別好的句子,例如包含關鍵片語的優秀轉譯,以增加其權重。
  • 語音服務會自動使用文字記錄來改善網域特定字詞和片語的辨識,就像新增為相關文字一樣。
  • 定型作業可能需要數天的時間才能完成。 若要改善訓練速度,請務必在具有專用硬體進行訓練的區域建立語音服務訂用帳戶。

需要大型定型數據集,才能改善辨識。 一般而言,我們建議您提供 1 到 20 小時的音訊逐字轉譯。 不過,即使只要 30 分鐘,也能協助改善辨識結果。 雖然建立人為標記的轉譯可能需要一點時間,但辨識的改善只與您提供的數據一樣好。 您應該只上傳高品質的文字記錄。

音訊檔案在錄製的開頭和結尾可能會有無聲。 可能的話,請在每個範例檔案的語音前後至少包含半秒的無聲。 雖然錄製音量低或干擾性背景雜訊的音訊沒有説明,但它不應該限制或降低您的自定義模型。 收集音訊範例之前,請務必先考慮升級麥克風和訊號處理硬體。

重要

如需關於準備人工標記轉錄內容最佳做法的詳細資訊,請參閱具有音訊的人工標記轉錄內容

自訂語音專案需要具有下列屬性的音訊檔案:

重要

這些是音訊 + 人為標籤文字記錄定型和測試的需求。 它們與僅限音訊定型和測試的不同之處。 如果您想要只使用音訊定型和測試, 請參閱本節

屬性
檔案格式 RIFF (WAV)
採樣速率 8,000 Hz 或 16,000 Hz
通道 1 (mono)
每個音訊的最大長度 兩個小時(測試) / 60 秒 (訓練)

使用音訊進行訓練,每個檔案的音訊長度上限為 60 秒。 對於超過 60 秒的音訊檔案,只會使用對應的轉譯檔案進行定型。 如果所有音訊檔案都超過 60 秒,定型就會失敗。
樣本格式 PCM,16 位
封存格式 .zip
ZIP 大小上限 2 GB 或 10,000 個檔案

用於定型的純文字數據

您可以新增相關文字的純文本句子,以改善特定領域字詞和片語的辨識。 相關文字句子可藉由在內容中顯示它們,以減少與常見單字和領域特定字詞辨識錯誤相關的替代錯誤。 領域特定的單字可能不常見或組成單字,但其發音必須直接辨識。

在單一文本檔中提供網域相關句子。 使用接近預期口語語句的文字數據。 語句不需要完整或語法正確,但必須準確地反映您預期模型可辨識的口語輸入。 可能的話,請嘗試在個別行上控制一個句子或關鍵詞。 若要增加字詞的權數,例如產品名稱,請新增數個包含字詞的句子。 但不要複製太多次 - 這樣可能會影響整體辨識率。

注意

避免包含雜訊的相關文字句子,例如無法辨識的字元或單字。

使用此資料表可確保純文字資料集檔案的格式正確:

屬性
文字編碼 UTF-8 BOM
每行語句數目 1
檔案大小上限 200 MB

您也必須遵守下列限制:

  • 字元、單字或單字群組請避免重複超過三次。 例如,不要使用 「aaaa」、“是的”或 “就是就是,就是這樣。語音服務可能會卸除太多重複的行。
  • 請勿使用上述特殊字元或 UTF-8 字元 U+00A1
  • URI 會遭到拒絕。
  • 對於日文或韓文等某些語言,匯入大量的文字數據可能需要很長的時間或逾時。請考慮將數據集分成多個文本檔,每個文本檔最多 20,000 行。

定型的結構化文字數據

注意

定型的結構化文字數據處於公開預覽狀態。

當您的資料遵循特定模式的特定語句時,請使用結構化文字數據,這些語句與清單只有單字或片語語不同。 為了簡化定型數據的建立,並啟用自定義語言模型中更好的模型化,您可以使用 Markdown 格式的結構化文字來定義專案清單和文字的語音發音。 然後,您可以在定型語句內參考這些清單。

預期的語句通常會遵循特定模式。 其中一個常見的模式是語句只與清單中的單字或片語語不同。 此模式的範例可能是:

  • “我有一個問題 product,”其中 product 是可能的產品清單。
  • “Make that objectcolor”,其中 object 是幾何圖形的清單,而 color 是色彩清單。

如需使用結構化文字進行定型的支援基底模型和地區設定清單,請參閱 語言支援。 您必須針對這些地區設定使用最新的基底模型。 對於不支援使用結構化文字進行定型的地區設定,服務會採用任何訓練句子,這些句子不會參考任何類別,做為使用純文本數據的定型的一部分。

結構化文本文件應該具有 .md 擴展名。 檔案大小上限為 200 MB,且文字編碼必須是 UTF-8 BOM。 Markdown 的語法與 Language Understanding 模型中的語法相同,特別是清單實體和範例語句。 如需完整 Markdown 語法的詳細資訊,請參閱 Language Understanding Markdown

以下是所支援 Markdown 格式的重要詳細資料:

屬性 說明 限制
@list 可在範例句子中參考的項目清單。 最多 20 個清單。 每個清單最多35,000個專案。
speech:phoneticlexicon 根據通用 電話 集的語音發音清單。 發音會針對出現在清單或定型句子中的每個實例進行調整。 例如,如果您有一個聽起來像是 「cat」 的字詞,而您想要將發音調整為 “k ae t”,您會將 新增 - cat/k ae tspeech:phoneticlexicon 清單。 最多15,000個專案。 每個單字最多兩個發音。
#ExampleSentences 磅符號 (#) 會分隔範例句子的區段。 區段標題只能包含字母、數位和底線。 範例句子應該反映模型應該預期的語音範圍。 定型句子可以使用左右大括弧 ({@list name}) 來參照 下方@list的專案。 您可以在相同的定型句子中參考多個清單,或完全不參考任何清單。 檔案大小上限為 200 MB。
// 批注遵循雙斜線 (//)。 不適用

以下是結構化文字檔範例:

// This is a comment because it follows a double slash (`//`).

// Here are three separate lists of items that can be referenced in an example sentence. You can have up to 10 of these.
@ list food =
- pizza
- burger
- ice cream
- soda

@ list pet =
- cat
- dog
- fish

@ list sports =
- soccer
- tennis
- cricket
- basketball
- baseball
- football

// List of phonetic pronunciations
@ speech:phoneticlexicon
- cat/k ae t
- fish/f ih sh

// Here are two sections of training sentences. 
#TrainingSentences_Section1
- you can include sentences without a class reference
- what {@pet} do you have
- I like eating {@food} and playing {@sports}
- my {@pet} likes {@food}

#TrainingSentences_Section2
- you can include more sentences without a class reference
- or more sentences that have a class reference like {@pet} 

定型的發音數據

特製或組成單字可能有獨特的發音。 如果這些單字可以細分成較小的單字來發音,則可以辨識這些單字。 例如,若要辨識 「Xbox」,請將它發音為 「X box」。。 這種方法不會提高整體精確度,但可以改善對此和其他關鍵詞的辨識。

您可以提供自定義發音檔案來改善辨識。 請勿使用自定義發音檔案來改變一般單字的發音。 如需支援自定義發音的語言清單,請參閱 語言支援

注意

除了結構化文字定型數據之外,您可以搭配任何其他定型數據集使用發音檔案。 若要搭配結構化文字使用發音數據,它必須位於結構化文本檔內。

說出的形式是拼音序列。它可以由字母、單字、音節或這三個字母的組合組成。 下表包含一些範例:

辨識的顯示表單 口語表單
3CPO 三個 c p o
CNTK c n t k
IEEE i triple e

您可以在單一文字檔中提供發音。 包含口語語句,以及每個語句的自定義發音。 檔案中的每個數據列都應該以已辨識的窗體開始,然後是製表符,然後是空格分隔的注音序列。

3CPO    three c p o
CNTK    c n t k
IEEE    i triple e

請參閱下表,以確保您的發音數據集檔案有效且格式正確。

屬性
文字編碼 UTF-8 BOM (ANSI 也支援英文版)
每行發音數目 1
檔案大小上限 1 MB(免費層 1 KB)

定型或測試的音訊數據

音訊資料最適合用於測試 Microsoft 的基準語音轉換文字模型或自訂模型的正確性。 請記住,音訊數據可用來檢查特定模型效能的語音精確度。 如果您想要量化模型的精確度,請使用 音訊 + 人為標記的文字記錄。

注意

僅限訓練的音訊數據可在地區設定預覽 en-US 中取得。 對於其他地區設定,若要使用音訊數據定型,您也必須提供 人為標記的文字記錄。

自訂語音專案需要具有下列屬性的音訊檔案:

重要

這些是僅限音訊定型和測試的需求。 它們與音訊 + 人為標記的文字記錄訓練和測試不同。 如果您想要使用音訊 + 人為標記的文字記錄訓練和測試, 請參閱本節

屬性
檔案格式 RIFF (WAV)
採樣速率 8,000 Hz 或 16,000 Hz
通道 1 (mono)
每個音訊的最大長度 兩小時
樣本格式 PCM,16 位
封存格式 .zip
封存大小上限 2 GB 或 10,000 個檔案

注意

當您上傳定型和測試數據時,.zip檔案大小不能超過 2 GB。 如果您需要更多數據進行定型,請將它分成數個.zip檔案,並個別上傳。 稍後,您可以選擇從 多個 數據集進行定型。 不過,您只能從單數據集進行測試。

使用 SoX 來驗證音訊屬性,或將現有的音訊轉換成適當的格式。 以下是一些 SoX 命令範例:

活動 SoX 命令
檢查音訊檔案格式。 sox --i <filename>
將音訊檔案轉換成單一通道 16 位元、16 KHz。 sox <input> -b 16 -e signed-integer -c 1 -r 16k -t wav <output>.wav

用於訓練的自定義顯示文字格式數據

深入瞭解如何 準備顯示文字格式數據 ,以及 使用語音轉換文字顯示文字格式設定。

自動語音辨識輸出顯示格式對於下游工作至關重要,且一個大小不適合所有工作。 新增自定義顯示格式規則可讓使用者定義自己的語匯對顯示格式規則,以改善 Microsoft Azure 自定義語音服務之上的語音辨識服務品質。

它可讓您完全自定義顯示輸出,例如新增重寫規則以大寫和重新格式化特定單字、新增輸出中的粗話字和遮罩、定義特定模式的進階 ITN 規則,例如數位、日期、電子郵件位址;或保留一些片語,並保留這些片語與任何顯示進程。

例如:

自訂格式設定 顯示文字
我的 contoso 財務號碼是 8BEV3
將 「Contoso」 大寫 (通過 #rewrite 規則)
格式化財務號碼 (透過 #itn 規則)
我的 Contoso 財務號碼是 8B-EV-3

如需使用結構化文字進行定型的支援基底模型和地區設定清單,請參閱語言支援。 顯示格式檔案應該具有 .md 擴展名。 檔案大小上限為 10 MB,且文字編碼必須是 UTF-8 BOM。 如需自定義顯示格式規則的詳細資訊,請參閱顯示格式規則最佳做法。

屬性 說明 限制
#ITN 反向文字正規化規則的清單,可定義特定顯示模式,例如數位、位址和日期。 最多 200 行
#rewrite 重寫配對的清單,以因大寫和拼字更正等原因取代特定單字。 最多 1,000 行
#profanity 在 Microsoft 內建不雅清單之上,將遮罩為 ****** [顯示] 和 [遮罩輸出] 的垃圾字詞清單。 最多 1,000 行
#test 單元測試案例清單,用來驗證顯示規則是否如預期般運作,包括語彙格式輸入和預期的顯示格式輸出。 檔案大小上限為 10 MB

以下是顯示格式檔案的範例:

// this is a comment line
// each section must start with a '#' character
#itn
// list of ITN pattern rules, one rule for each line
\d-\d-\d
\d-\l-\l-\d
#rewrite
// list of rewrite rules, each rule has two phrases, separated by a tab character
old phrase	new phrase
# profanity
// list of profanity phrases to be tagged/removed/masked, one line one phrase
fakeprofanity
#test
// list of test cases, each test case has two sentences, input lexical and expected display output
// the two sentences are separated by a tab character
// the expected sentence is the display output of DPP+CDPP models
Mask the fakeprofanity word	Mask the ************* word

下一步