Come preparare i dati di training in formato testo per il riconoscimento vocale personalizzato
Il servizio Voce di Azure AI può essere visualizzato come due componenti: il riconoscimento vocale e la formattazione del testo. Il riconoscimento vocale trascrive l'audio in testo lessicale e quindi il testo lessicale viene trasformato in testo visualizzato.
Le seguenti impostazioni locali supportano la funzionalità formato testo visualizzato: 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.
Formattazione predefinita del testo visualizzato
La pipeline di testo visualizzato è costituita da una sequenza di generatori di formati di visualizzazione. Ogni generatore corrisponde a un'attività di formato di visualizzazione, ad esempio ITN, maiuscole e filtro per contenuto volgare.
- ITN (Inverse Text Normalization): per convertire il testo dei numeri parlati in formato visualizzato. Ad esempio:
"I spend twenty dollars" -> "I spend $20"
- Maiuscole: per visualizzare in maiuscolo i nomi di entità, gli acronimi o la prima lettera di una frase. Ad esempio:
"she is from microsoft" -> "She is from Microsoft"
- Filtro contenuto volgare: mascheramento o rimozione di parole volgari da una frase. Ad esempio, supponendo che "abcd" sia una parola volgare, la parola viene mascherata dalla maschera volgarità:
"I never say abcd" -> "I never say ****"
Microsoft gestisce i generatori di base della pipeline di testo visualizzato per le attività di elaborazione per utilizzo generico. I generatori di base vengono visualizzati per impostazione predefinita quando si usa il servizio Voce. Per altre informazioni sulla formattazione predefinita, vedere Formato testo visualizzato.
Formattazione del testo di visualizzazione personalizzata
Oltre ai generatori di base gestiti da Microsoft, è possibile definire regole di formattazione del testo visualizzato personalizzate per personalizzare la pipeline di formattazione per scenari specifici. Le regole di formattazione del testo visualizzato personalizzate sono definite in un file di formattazione del testo visualizzato personalizzato.
- ITN personalizzato: estendere le funzionalità dell'ITN di base applicando un modello ITN personalizzato basato su regole dal cliente.
- Riscrittura personalizzata: riscrivere una frase in un'altra in base a un modello basato su regole del cliente.
- Filtro di contenuto volgare personalizzato: eseguire la gestione delle espressioni volgari in base all'elenco di parole volgari del cliente.
L'ordine della pipeline di formattazione del testo visualizzato è illustrato in questo diagramma.
ITN personalizzato
La filosofia dell'ITN personalizzato basato su modelli implica che è possibile specificare l'output finale che si vuole visualizzare. Il servizio Voce individua il modo in cui le parole possono essere pronunciate ed esegue il mapping delle espressioni vocali stimate al formato di output specificato.
Un modello ITN personalizzato viene creato da un set di regole ITN. Una regola ITN è un'espressione regolare come una stringa di criteri, che descrive:
- Un modello di corrispondenza della stringa di input
- Il formato desiderato della stringa di output
Le regole ITN predefinite fornite da Microsoft vengono applicate per prime. L'output del modello ITN predefinito viene usato come input del modello ITN personalizzato. L'algoritmo corrispondente all'interno del modello ITN personalizzato non fa distinzione tra maiuscole e minuscole.
Esistono quattro categorie di criteri di ricerca con regole ITN personalizzate.
- Modelli con valori letterali
- Modelli con caratteri jolly
- Modelli con notazione in stile Regex
- Modelli con sostituzione esplicita
Modelli con valori letterali
Ad esempio, uno sviluppatore potrebbe avere un elemento (come un prodotto) denominato con il formato alfanumerico JO:500
. Il servizio Voce capisce che gli utenti potrebbero pronunciare la parte della lettera come J O
oppure potrebbero pronunciare joe
e la parte numerica come five hundred
o five zero zero
o five oh oh
o five double zero
e quindi crea un modello che esegue il mapping di tutte queste possibilità a JO:500
(incluso l'inserimento dei due punti).
I modelli possono essere applicati in parallelo specificando una regola per riga nel file di formattazione del testo visualizzato. Di seguito è riportato un esempio di file di formattazione del testo visualizzato che specifica due regole:
JO:500
MM:760
Modelli con caratteri jolly
È possibile fare riferimento a un'intera serie di elementi alfanumerici (ad esempio JO:500
, JO:600
, JO:700
) senza dover definire tutte le possibilità in diversi modi.
Gli intervalli di caratteri possono essere specificati con la notazione [...]
, quindi JO:[5-7]00
equivale a scrivere tre modelli.
È disponibile anche un set di elementi jolly da usare. Uno di questi è \d
, ovvero qualsiasi cifra. Quindi JO:\d00
copre JO:000
, JO:100
e altri fino a JO:900
.
Analogamente a un'espressione regolare, esistono più classi di caratteri predefinite per una regola ITN:
\d
: trova la corrispondenza di una cifra da "0" a "9" e restituisce direttamente l'output\l
: trova una corrispondenza con una lettera (senza distinzione tra maiuscole e minuscole) e la trasduce in lettera minuscola\u
: trova una corrispondenza con una lettera (senza distinzione tra maiuscole e minuscole) e la trasduce in lettera maiuscola\a
: trova una corrispondenza con una lettera (senza distinzione tra maiuscole e minuscole) e la restituisce direttamente
Esistono anche espressioni di escape per fare riferimento a caratteri che altrimenti avrebbero un significato sintattico speciale:
\\
: trova una corrispondenza e restituisce il carattere\
\(
e\)
\{
e\}
\|
\+
e\?
e\*
Modelli con notazione in stile Regex
Per migliorare la flessibilità della scrittura di modelli, sono supportate le costruzioni di espressioni regolari di frasi con alternative e la chiusura di Kleene.
- Una frase è indicata tra parentesi, ad esempio
(...)
: le parentesi non vengono conteggiate letteralmente come caratteri corrispondenti. - È possibile indicare alternative all'interno di una frase con il carattere
|
, ad esempio(AB|CDE)
. - È possibile inserire come suffisso
?
in una frase per indicare che è facoltativa,+
per indicare che può essere ripetuta o*
per indicare entrambe le condizione. È possibile aggiungere suffissi solo alle frasi con questi caratteri e non singoli caratteri (cosa più restrittiva rispetto alla maggior parte delle implementazioni di espressioni regolari).
Un modello come (AB|CD)-(\d)+
rappresenta costrutti come "AB-9" o "CD-22" e viene espanso in parole pronunciate come A B nine
e C D twenty two
(o C D two two
).
Modelli con sostituzione esplicita
La filosofia generale è "mostrare come dovrebbe apparire l'output per permettere al servizio Voce di capire come lo pronunciano le persone". Tuttavia, questo approccio non funziona sempre perché alcuni scenari potrebbero presentare modi imprevedibili di dire le cose o le regole in background del servizio Voce potrebbero avere lacune. Ad esempio, possono essere presenti pronunce colloquiali per le iniziali e gli acronimi, ZPI
potrebbe essere pronunciato come zippy
. In questo caso, è improbabile che un modello come ZPI-\d\d
funzioni se un utente indica zippy twenty two
. Per questo tipo di situazione, è presente una notazione di formato testo visualizzato {spoken>written}
. Questo caso specifico può essere scritto come {zippy>ZPI}-\d\d
.
Ciò può essere utile per la gestione delle regole di mapping del riconoscimento vocale, ma non è ancora uno scenario supportato. Ad esempio, è possibile scrivere un modello \d0-\d0
se si prevede che il sistema possa comprendere che "-" può significare un intervallo e deve essere pronunciato to
, come in twenty to thirty
. La cosa potrebbe però anche non funzionare. È quindi possibile scrivere un modello più esplicito come \d0{to>-}\d0
e indicare come si desidera che venga letto il trattino.
È anche possibile escludere >
e il formato scritto seguente per indicare le parole che devono essere riconosciute ma ignorate. Un modello come {write} (\u.)+
riconosce quindi write A B C
ed esegue come output A.B.C
, eliminando la parte write
.
Esempi ITN personalizzati
Cifre di gruppo
Per raggruppare 6 cifre in due gruppi e aggiungere un carattere "-" tra di esse:
Regola ITN: esempio di
\d\d\d-\d\d\d
:"cadence one oh five one fifteen" -> "cadence 105-115"
Formattare il nome di un film
Spazio: 1999 è un famoso film, per supportarlo:
Regola ITN: esempio di
Space: 1999
:"watching space nineteen ninety nine" -> "watching Space: 1999"
Modello con sostituzione
Regola ITN: esempio di
\d[05]{ to >-}\d[05]
:fifteen to twenty -> 15-20
Riscrittura personalizzata
In generale, per una stringa di input, il modello di riscrittura tenta di sostituire il original phrase
nella stringa di input con il new phrase
corrispondente per ogni regola di riscrittura. Un modello di riscrittura è una raccolta di regole di riscrittura.
- Una regola di riscrittura è una coppia di due frasi: la frase originale e una nuova frase.
- Le due frasi sono separate da un carattere TAB. Ad esempio,
original phrase
{TAB}new phrase
. - La frase originale viene confrontata (senza distinzione tra maiuscole e minuscole) e sostituita con la nuova frase (con distinzione tra maiuscole e minuscole). I caratteri di punteggiatura grammaticale nella frase originale vengono ignorati durante la corrispondenza.
- Se le regole di riscrittura sono in conflitto, quella con il valore
original phrase
più lungo viene usata come corrispondenza.
Il modello di riscrittura supporta la grammatica per impostazione predefinita, che inserisce come maiuscola la prima lettera di una frase per en-US
come le impostazioni locali. È disattivato se la funzionalità di formattazione del testo visualizzato è disattivata in una richiesta di riconoscimento vocale.
Punteggiatura grammaticale
I caratteri di punteggiatura grammaticale vengono usati per separare una frase e chiarire come questa deve essere letta.
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
Ecco le regole di punteggiatura grammaticale:
- I caratteri di punteggiatura supportati si applicano alla punteggiatura grammaticale se sono seguiti da spazio o si trovano all'inizio o alla fine di una frase o di un'espressione. Ad esempio,
.
inx. y
(con uno spazio tra.
ey
) è una punteggiatura grammaticale. - I caratteri di punteggiatura che si trovano al centro di una parola (ad eccezione di
zh-cn
eja-jp
) non sono segni di punteggiatura grammaticale. In questo caso, sono caratteri ordinari. Ad esempio,.
inx.y
non è una punteggiatura grammaticale. - Per
zh-cn
eja-jp
(impostazioni locali senza spaziatura), i caratteri di punteggiatura vengono sempre usati come punteggiatura grammaticale anche se si trovano tra caratteri. Ad esempio,.
in中.文
è una punteggiatura grammaticale.
Esempi di riscrittura personalizzati
Correzione dell'ortografia
Il nome COVID-19
potrebbe essere riconosciuto come covered 19
. Per assicurarsi che venga visualizzato COVID-19 is a virus
invece di covered 19 is a virus
, usare la regola di riscrittura seguente:
#rewrite
covered 19{TAB}COVID-19
Lettera maiuscola/minuscola nome
Gottfried Wilhelm Leibniz è stato un matematico tedesco. Per assicurarsi che Gottfried Wilhelm Leibniz
sia in maiuscolo, usare la regola di riscrittura seguente:
#rewrite
gottfried leibniz{TAB}Gottfried Leibniz
Volgarità personalizzata
Un modello di contenuto volgare personalizzato funziona come il modello di contenuto volgare di base, ad eccezione del fatto che usa un elenco di frasi volgari personalizzato. Inoltre, il modello di contenuto volgare personalizzato tenta di trovare corrispondenze (senza distinzione tra maiuscole e minuscole) con tutte le frasi volgari definite nel file di formattazione del testo visualizzato.
- Le frasi volgari vengono abbinate (senza distinzione tra maiuscole e minuscole).
- Se le regole delle frasi volgari sono in conflitto, la frase più lunga viene usata come corrispondenza.
- Questi caratteri di punteggiatura non sono supportati in una frase volgare:
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
. - Per le impostazioni locali di
zh-CN
eja-JP
, le frasi volgari in inglese non sono supportate. Sono supportate parole volgari in inglese. Sono supportate frasi volgari per le impostazioni locali dizh-CN
eja-JP
.
Il contenuto volgare viene rimosso o mascherato a seconda delle impostazioni della richiesta di riconoscimento vocale.
Dopo aver aggiunto contenuto volgare nel file della regola di formato testo visualizzato e dopo che il modello personalizzato viene sottoposto a training, viene usato per l'output predefinito in sintesi vocale in batch e in tempo reale.
Esempi di volgarità personalizzata
Ecco alcuni esempi di come mascherare parole volgari e frasi nel file di formattazione del testo visualizzato.
Esempio di parola volgare singola mascherata
Si supponga che xyz
sia una parola volgare. Per aggiungerlo:
#profanity
xyz
Ecco un esempio di test: Turned on profanity masking to mask xyz -> Turned on profanity masking to mask ***
Maschera espressione volgare
Si supponga che abc lmn
sia una frase volgare. Per aggiungerla:
#profanity
abc lmn
Ecco un esempio di test: Turned on profanity masking to mask abc lmn -> Turned on profanity masking to mask *** ***