如何針對自訂語音準備顯示文字格式訓練資料
Azure AI 語音服務可視為下列兩個元件:語音辨識和顯示文字格式。 語音辨識會將音訊轉譯為語彙文字,然後將語彙文字轉換為顯示文字。
以下是支援顯示文字格式功能的地區設定:da-DK、de-DE、en-AU、en-CA、en-GB、en-HK、en-IE、en-IN、en-NG、en-NZ、en-PH、en-SG、en-US、es-ES、es-MX、fi-FI、fr-CA、fr-FR、hi-IN、it-IT、ja-JP、ko-KR、nb-NO、nl-NL、pl-PL、pt-BR、pt-PT、sv-SE、tr-TR、zh-CN、zh-HK。
預設顯示文字格式
顯示文字管線是由一連串的顯示格式建立器所組成。 每個建立器都會對應到一個顯示格式工作,例如 ITN、大寫及不雅內容篩選。
- 反向文字正規化 (ITN):將口語形式數字的文字轉換為顯示形式。 例如:
"I spend twenty dollars" -> "I spend $20"
- 大寫:將實體名稱、縮略字或句子的第一個字母轉換為大寫。 例如:
"she is from microsoft" -> "She is from Microsoft"
- 不雅內容篩選:為句子中的不雅字詞設定遮罩或加以移除。 例如,假設 "abcd" 是一個不雅字詞,則會為該字詞設定遮罩以進行不雅內容遮罩:
"I never say abcd" -> "I never say ****"
Microsoft 會針對一般用途的顯示處理工作,維護顯示文字管線的基礎建立器。 當您使用語音服務時,預設會取得基礎建立器。 如需現成可用格式的詳細資訊,請參閱顯示文字格式 (英文)。
自訂顯示文字格式
除了 Microsoft 所維護的基礎建立器之外,您還可以定義自訂顯示文字格式規則,針對特定案例自訂顯示文字格式管線。 自訂顯示文字格式規則均定義於自訂顯示文字格式檔案中。
- 自訂 ITN:透過套用客戶提供的規則型自訂 ITN 模型來擴充基礎 ITN 的功能。
- 自訂重寫:根據客戶提供的規則型模型,將一個片語重寫為另一個片語。
- 自訂不雅內容篩選:根據客戶提供的不雅單字清單執行不雅內容處理。
此圖說明顯示文字格式設定管線的順序。
自訂 ITN
模式型自訂 ITN 的原理是您可以指定您想要看見的最終輸出。 語音服務會推算出如何說出單字,並將預測的口語表達對應到指定的輸出格式。
自訂 ITN 模型是從一組 ITN 規則建置的。 ITN 規則是類似模式字串的規則運算式,其描述:
- 輸入字串的比對模式
- 輸出字串所需的格式
系統會先套用 Microsoft 所提供的預設 ITN 規則。 預設 ITN 模型的輸出會用來作為自訂 ITN 模型的輸入。 自訂 ITN 模型內的比對演算法不會區分大小寫。
具有自訂 ITN 規則的模式比對有四種類別。
具有常值的模式
例如,開發人員可能有一個項目 (例如產品) 是以英數字元形式 JO:500
命名。 語音服務會推算出使用者可能將字母部分說成 J O
,或者他們可能會說 joe
,並將數字部分說成 five hundred
、five zero zero
、five oh oh
或 five double zero
,然後建置模型,以將所有這些可能性對應回 JO:500
(包括插入冒號)。
您可以透過為顯示文字格式檔案中的每一行指定一個規則,以平行方式套用模式。 以下是指定兩個規則的顯示文字格式檔案範例:
JO:500
MM:760
具有萬用字元的模式
您可以參考一整個系列的英數字元項目 (例如 JO:500
、JO:600
、JO:700
),而不必以數種方式拼出所有可能性。
您可以使用標記法 [...]
來指定字元範圍,因此 JO:[5-7]00
相當於寫出三個模式。
此外,還有一組可使用的萬用字元項目。 這其中一個是 \d
,其可代表任一數字。 因此,JO:\d00
涵蓋 JO:000
、JO:100
,以及最高可達 JO:900
的其他內容。
如同規則運算式,ITN 規則有多個預先定義的字元類別:
\d
:從 '0' 到 '9' 比對數字,並直接輸出\l
:比對字母 (不區分大小寫),並轉譯為小寫\u
:比對字母 (不區分大小寫),並轉譯為大寫\a
:比對字母 (不區分大小寫),並直接輸出
此外,還有逸出運算式,可用來參考具有特殊語法意義的字元:
\\
:比對並輸出\
字元\(
和\)
\{
和\}
\|
\+
、\?
和\*
具有 Regex 樣式標記法的模式
為了增強模式撰寫的彈性,支援具有替代項目和 Kleene 閉包之片語的規則運算式類似建構。
- 片語會以括號表示,例如
(...)
:括號實際上不會被視為要比對的字元。 - 您可以使用
|
字元來指出片語內的替代項目,例如(AB|CDE)
。 - 您可以使用
?
作為片語的尾碼來指出其為選用、使用+
來表示其可重複使用,或使用*
來表示這兩者。 您只能使用這些字元作為片語的尾碼,而不能使用個別字元 (比大多數規則運算式實作更嚴格)。
諸如 (AB|CD)-(\d)+
的模式可能代表 "AB-9" 或 "CD-22" 之類的建構,且可擴展為要說出口的話,例如 A B nine
和 C D twenty two
(或 C D two two
)。
具有明確取代項目的模式
一般原理是「你向我們展示輸出應該是什麼樣子,然後語音服務會推算出人們如何說出它」。但這不一定能夠運作,因為某些案例可能會有古怪且不可預知的說法,或者語音服務背景規則可能存在差距。 例如,有適用於首字母和縮略字的口語發音:ZPI
可能讀作 zippy
。 在此情況下,如果使用者說 zippy twenty two
,ZPI-\d\d
之類的模式不太可能運作。 針對這種情況,有一個顯示文字格式標記法 {spoken>written}
。 此特定案例可能會寫出 {zippy>ZPI}-\d\d
。
這對於處理語音對應規則尚不支援的項目非常有用。 例如,您可能會撰寫模式 \d0-\d0
,並預期系統了解 "-" 可能表示某個範圍,且應發音為 to
,如 twenty to thirty
中所示。 但也許並非如此。 因此,您可以撰寫更明確的模式 (例如 \d0{to>-}\d0
),並告訴它,您預期要如何讀出虛線的方式。
您也可以省略 >
及後面的書寫格式,以指出應該辨識但忽略的單字。 因此,{write} (\u.)+
之類的模式會辨識 write A B C
並輸出 A.B.C
:捨棄 write
部分。
自訂 ITN 範例
將數字分組
將 6 個數字分為兩個群組,並在這兩個群組之間新增 '-' 字元:
ITN 規則:
\d\d\d-\d\d\d
範例:"cadence one oh five one fifteen" -> "cadence 105-115"
設定電影名稱格式
Space: 1999 是一部著名的電影,支持一下:
ITN 規則:
Space: 1999
範例:"watching space nineteen ninety nine" -> "watching Space: 1999"
具有取代項目的模式
ITN 規則:
\d[05]{ to >-}\d[05]
範例:fifteen to twenty -> 15-20
自訂重寫
一般而言,針對輸入字串,重寫模型會針對每個重寫規則,嘗試將輸入字串中的 original phrase
取代為對應的 new phrase
。 重寫模型是一組重寫規則。
- 重寫規則是一對兩個片語的組合:原始片語和新片語。
- 這兩個片語會以 TAB 字元分隔。 例如,
original phrase
{TAB}new phrase
。 - 原始片語會進行比對 (不區分大小寫),並以新片語取代 (區分大小寫)。 比對期間會忽略原始片語中的文法標點符號字元。
- 如果有任何重寫規則發生衝突,則會使用具有較長
original phrase
的重寫規則作為相符項目。
重寫模型預設支援文法大寫,這會針對 en-US
之類的地區設定,將句子的第一個字母轉換為大寫。 如果在語音辨識要求中已關閉顯示文字格式的大寫功能,則會關閉此功能。
文法標點符號
文法標點符號字元可用來分隔句子或片語,並釐清應如何讀出句子或片語。
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
以下是文法標點符號規則:
- 支援的標點符號字元適用於文法標點符號,但前提是其後面接著空格,或是位於句子或片語的開頭或結尾。 例如,
x. y
中的.
(.
與y
之間有一個空格) 是文法標點符號。 - 單字中間的標點符號字元 (
zh-cn
和ja-jp
除外) 不是文法標點符號。 在此情況下,其為一般字元。 例如,x.y
中的.
不是文法標點符號。 - 對於
zh-cn
和ja-jp
(無空格的地區設定),標點符號字元一律會作為文法標點符號使用,即使其位於字元之間也一樣。 例如,中.文
中的.
是文法標點符號。
自訂重寫範例
拼字校正
名稱 COVID-19
可能會辨識為 covered 19
。 若要確定會顯示 COVID-19 is a virus
,而不是 covered 19 is a virus
,請使用下列重寫規則:
#rewrite
covered 19{TAB}COVID-19
名稱大寫
Gottfried Wilhelm Leibniz 是德國數學家。 若要確定會以大寫書寫 Gottfried Wilhelm Leibniz
,請使用下列重寫規則:
#rewrite
gottfried leibniz{TAB}Gottfried Leibniz
自訂不雅內容
自訂不雅內容模型的行為會與基礎不雅內容模型相同,但會使用自訂的不雅片語清單。 此外,自訂不雅內容模型會嘗試比對 (不區分大小寫) 顯示文字格式檔案中定義的所有不雅片語。
- 不雅片語均會進行比對 (不區分大小寫)。
- 如果有任何不雅片語規則發生衝突,則會使用最長的片語作為相符項目。
- 不雅片語不支援這些標點符號字元:
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
。 - 對於
zh-CN
和ja-JP
地區設定,不支援英文的不雅片語。 英文的不雅單字均受到支援。zh-CN
和ja-JP
地區設定的不雅片語均受到支援。
根據您的語音辨識要求設定,會移除不雅內容或為其設定遮罩。
一旦在顯示文字格式規則檔案中新增不雅內容並訓練自訂模型之後,就會將其用來作為批次語音轉換文字和即時語音轉換文字的預設輸出。
自訂不雅內容範例
以下是如何在顯示文字格式檔案中為不雅單字和片語設定遮罩的一些範例。
為單一不雅單字設定遮罩的範例
假設 xyz
是一個不雅單字。 若要新增它:
#profanity
xyz
以下是測試範例:Turned on profanity masking to mask xyz -> Turned on profanity masking to mask ***
為不雅片語設定遮罩
假設 abc lmn
是一個不雅片語。 若要新增它:
#profanity
abc lmn
以下是測試範例:Turned on profanity masking to mask abc lmn -> Turned on profanity masking to mask *** ***