Como preparar dados de treinamento de formato de texto de exibição para fala personalizada
O serviço Azure AI Speech pode ser visto como dois componentes: reconhecimento de fala e formatação de texto de exibição. O reconhecimento de fala transcreve áudio para texto lexical e, em seguida, o texto lexical é transformado para exibir texto.
Estas são as localidades que suportam o recurso de formato de texto de exibição: 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.
O pipeline de texto de exibição é composto por uma sequência de construtores de formatos de exibição. Cada construtor corresponde a uma tarefa de formato de exibição, como ITN, capitalização e filtragem de palavrões.
- Normalização de Texto Inverso (ITN) - Para converter o texto de números de formulário falados para exibir formulário. Por exemplo:
"I spend twenty dollars" -> "I spend $20"
- Capitalização - Para nomes de entidades maiúsculas, siglas ou a primeira letra de uma frase. Por exemplo:
"she is from microsoft" -> "She is from Microsoft"
- Filtragem de palavrões - Mascaramento ou remoção de palavras de baixo calão de uma frase. Por exemplo, assumindo que "abcd" é uma palavra de palavrão, então a palavra é mascarada por mascaramento de palavrões:
"I never say abcd" -> "I never say ****"
A Microsoft mantém os construtores base do pipeline de texto de exibição para as tarefas de processamento de exibição de uso geral. Você obtém os construtores de base por padrão quando usa o serviço de fala. Para obter mais informações sobre formatação pronta, consulte Exibir formato de texto.
Além dos construtores de base mantidos pela Microsoft, você pode definir regras personalizadas de formatação de texto de exibição para personalizar o pipeline de formatação de texto de exibição para seus cenários específicos. As regras de formatação de texto de exibição personalizada são definidas em um arquivo de formatação de texto de exibição personalizado.
- ITN personalizado - Estenda as funcionalidades do ITN base, aplicando um modelo ITN personalizado baseado em regras do cliente.
- Reescrita personalizada - Reescreva uma frase para outra com base em um modelo baseado em regras do cliente.
- Filtragem personalizada de palavrões - Execute o tratamento de palavrões com base na lista de palavras de palavrões do cliente.
A ordem do pipeline de formatação de texto de exibição é ilustrada neste diagrama.
A filosofia do ITN personalizado baseado em padrões é que você pode especificar a saída final que deseja ver. O serviço de Fala descobre como as palavras podem ser faladas e mapeia as expressões faladas previstas para o formato de saída especificado.
Um modelo ITN personalizado é construído a partir de um conjunto de regras ITN. Uma regra ITN é uma expressão regular como string de padrão, que descreve:
- Um padrão de correspondência da cadeia de caracteres de entrada
- O formato desejado da cadeia de caracteres de saída
As regras ITN padrão fornecidas pela Microsoft são aplicadas primeiro. A saída do modelo ITN padrão é usada como a entrada do modelo ITN personalizado. O algoritmo de correspondência dentro do modelo ITN personalizado não diferencia maiúsculas de minúsculas.
Há quatro categorias de correspondência de padrões com regras ITN personalizadas.
- Padrões com literais
- Padrões com curingas
- Padrões com notação no estilo Regex
- Padrões com substituição explícita
Por exemplo, um desenvolvedor pode ter um item (como um produto) nomeado com o formulário JO:500
alfanumérico . O serviço de Fala descobre que os usuários podem dizer a parte da letra como J O
, ou eles podem dizer joe
, e a parte do número como five hundred
ou five double zero
five zero zero
five oh oh
ou , e, em seguida, construir um modelo que mapeia todas essas possibilidades de volta para JO:500
(incluindo a inserção de dois pontos).
Os padrões podem ser aplicados em paralelo especificando uma regra por linha no arquivo de formatação de texto de exibição. Aqui está um exemplo de um arquivo de formatação de texto de exibição que especifica duas regras:
JO:500
MM:760
Você pode se referir a uma série de itens alfanuméricos (como JO:500
, , JO:600
JO:700
) sem ter que especificar todas as possibilidades de várias maneiras.
Os intervalos de caracteres podem ser especificados com a notação [...]
, por isso JO:[5-7]00
é equivalente a escrever três padrões.
Há também um conjunto de itens curinga que podem ser usados. Um deles é \d
, que significa qualquer dígito. Então JO:\d00
cobre JO:000
, JO:100
, e outros até JO:900
.
Como uma expressão regular, há várias classes de caracteres predefinidas para uma regra ITN:
\d
- corresponder a um dígito de «0» a «9» e emiti-lo diretamente\l
- corresponder a uma letra (sem distinção entre maiúsculas e minúsculas) e transduzi-la para minúsculas\u
- corresponder a uma letra (sem distinção entre maiúsculas e minúsculas) e transduzi-la para maiúsculas\a
- corresponder a uma letra (sem distinção entre maiúsculas e minúsculas) e emiti-la diretamente
Há também expressões de escape para se referir a caracteres que, de outra forma, têm significado sintático especial:
\\
- combinar e produzir o char\
\(
e\)
\{
e\}
\|
\+
e\?
ainda\*
Para aumentar a flexibilidade da escrita de padrões, são suportadas construções de expressões regulares de frases com alternativas e fechamento de Kleene.
- Uma frase é indicada entre parênteses, como
(...)
- Os parênteses não contam literalmente como caracteres a serem correspondidos. - Você pode indicar alternativas dentro de uma frase com o
|
caractere, como(AB|CDE)
. - Você pode sufixar uma frase com
?
para indicar que ela é opcional,+
para indicar que ela pode ser repetida ou*
para indicar ambas. Você só pode sufixar frases com esses caracteres e não caracteres individuais (o que é mais restritivo do que a maioria das implementações de expressão regular).
Um padrão como (AB|CD)-(\d)+
representaria construções como "AB-9" ou "CD-22" e seria expandido para palavras faladas como A B nine
e C D twenty two
(ou C D two two
).
A filosofia geral é "você nos mostra como deve ser a saída e o serviço de fala descobre como as pessoas dizem isso". Mas isso nem sempre funciona porque alguns cenários podem ter maneiras peculiares e imprevisíveis de dizer as coisas, ou as regras de fundo do serviço de fala podem ter lacunas. Por exemplo, pode haver pronúncias coloquiais para iniciais e acrônimos - ZPI
pode ser falado como zippy
. Nesse caso, é improvável que um padrão como ZPI-\d\d
funcione se um usuário disser zippy twenty two
. Para esse tipo de situação, há uma notação {spoken>written}
de formato de texto de exibição. Este caso em particular poderia ser escrito {zippy>ZPI}-\d\d
.
Isso pode ser útil para lidar com coisas que as regras de mapeamento de fala, mas ainda não suportam. Por exemplo, você pode escrever um padrão \d0-\d0
esperando que o sistema entenda que "-" pode significar um intervalo, e deve ser pronunciado to
, como em twenty to thirty
. Mas talvez não. Assim, você pode escrever um padrão mais explícito como \d0{to>-}\d0
e dizer como você espera que o traço seja lido.
Você também pode deixar de fora a forma escrita e seguinte >
para indicar palavras que devem ser reconhecidas, mas ignoradas. Então, um padrão como {write} (\u.)+
reconhece e saída A.B.C
- soltando a write
write A B C
peça.
Para agrupar 6 dígitos em dois grupos e adicionar um caractere '-' entre eles:
Regra ITN:
\d\d\d-\d\d\d
Exemplo:"cadence one oh five one fifteen" -> "cadence 105-115"
Espaço: 1999 é um filme famoso, para apoiá-lo:
Regra ITN:
Space: 1999
Exemplo:"watching space nineteen ninety nine" -> "watching Space: 1999"
Regra ITN:
\d[05]{ to >-}\d[05]
Exemplo:fifteen to twenty -> 15-20
Falando em geral, para uma cadeia de caracteres de entrada, o modelo de reescrita tenta substituir o original phrase
na cadeia de caracteres de entrada pelo correspondente new phrase
para cada regra de reescrita. Um modelo de reescrita é uma coleção de regras de reescrita.
- Uma regra de reescrita é um par de duas frases: a frase original e uma nova frase.
- As duas frases são separadas por um caractere TAB. Por exemplo,
original phrase
{TAB}new phrase
. - A frase original é correspondida (não diferencia maiúsculas de minúsculas) e substituída pela nova frase (diferencia maiúsculas de minúsculas). Os caracteres de pontuação gramatical na frase original são ignorados durante a correspondência.
- Se alguma regra de reescrita entrar em conflito, a que tiver mais tempo
original phrase
será usada como correspondência.
O modelo de reescrita suporta maiúsculas gramaticais por padrão, que capitaliza a primeira letra de uma frase para en-US
localidades semelhantes. Ele será desativado se o recurso de maiúsculas da formatação de texto de exibição estiver desativado em uma solicitação de reconhecimento de fala.
Os caracteres de pontuação gramatical são usados para separar uma frase ou frase e esclarecer como uma frase deve ser lida.
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
Aqui estão as regras de pontuação gramatical:
- Os caracteres de pontuação suportados são para pontuação gramatical se forem seguidos por espaço ou no início ou no final de uma frase ou frase. Por exemplo, o
.
inx. y
(com um espaço entre.
ey
) é uma pontuação gramatical. - Os caracteres de pontuação que estão no meio de uma palavra (exceto
zh-cn
eja-jp
) não são pontuação gramatical. Nesse caso, são personagens comuns. Por exemplo, o.
inx.y
não é uma pontuação gramatical. - Para
zh-cn
eja-jp
(localidades sem espaçamento), os caracteres de pontuação são sempre usados como pontuação gramatical, mesmo que estejam entre caracteres. Por exemplo, o.
in中.文
é uma pontuação gramatical.
O nome COVID-19
pode ser reconhecido como covered 19
. Para se certificar de que COVID-19 is a virus
é apresentado em vez de , utilize a seguinte regra de covered 19 is a virus
reescrita:
#rewrite
covered 19{TAB}COVID-19
Gottfried Wilhelm Leibniz foi um matemático alemão. Para certificar-se de que Gottfried Wilhelm Leibniz
está em maiúsculas, use a seguinte regra de reescrita:
#rewrite
gottfried leibniz{TAB}Gottfried Leibniz
Um modelo de palavrões personalizado age da mesma forma que o modelo de palavrões base, exceto que usa uma lista de frases de palavrões personalizadas. Além disso, o modelo de palavrões personalizado tenta corresponder (sem distinção entre maiúsculas e minúsculas) todas as frases de palavrões definidas no arquivo de formatação de texto de exibição.
- As frases de palavrão são combinadas (sem distinção entre maiúsculas e minúsculas).
- Se alguma frase de palavrão entrar em conflito, a frase mais longa é usada como correspondência.
- Esses caracteres de pontuação não são suportados em uma frase de palavrão:
. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،
. - Para
zh-CN
eja-JP
localidades, frases de palavrões em inglês não são suportadas. Palavras de baixo calão em inglês são suportadas. Frases de palavrões parazh-CN
eja-JP
localidades são suportadas.
Os palavrões são removidos ou mascarados dependendo das configurações da sua solicitação de reconhecimento de fala.
Depois que os palavrões são adicionados no arquivo de regra de formato de texto de exibição e o modelo personalizado é treinado, ele é usado para a saída padrão em fala em lote para texto e fala em tempo real para texto.
Aqui estão alguns exemplos de como mascarar palavras e frases de palavrões no arquivo de formatação de texto de exibição.
Supor xyz
é uma palavra de palavrão. Para adicioná-lo:
#profanity
xyz
Aqui está um exemplo de teste: Turned on profanity masking to mask xyz -> Turned on profanity masking to mask ***
Suponha abc lmn
que é uma frase de palavrão. Para adicioná-lo:
#profanity
abc lmn
Aqui está um exemplo de teste: Turned on profanity masking to mask abc lmn -> Turned on profanity masking to mask *** ***