Compartir por


Preparación de los datos de entrenamiento con formato de texto para la conversión de voz personalizada

El servicio Voz de Azure AI se puede ver como dos componentes: reconocimiento de voz y formato de texto para mostrar. El reconocimiento de voz transcribe audio a texto léxico y a continuación, el texto léxico se transforma para mostrar texto.

Diagrama del flujo de reconocimiento de voz a léxico para mostrar texto.

Estas son las configuraciones regionales que admiten la característica de formato de texto para mostrar: 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.

Formato de texto para mostrar predeterminado

El proceso de canalización de texto está compuesto por una secuencia de compiladores de formatos de visualización. Cada compilador corresponde a una tarea de formato de presentación, como ITN, mayúsculas y filtrado de palabras soeces.

  • Normalización inversa de texto (ITN): para convertir el texto de los números de formulario hablados para mostrar el formulario. Por ejemplo: "I spend twenty dollars" -> "I spend $20"
  • Mayúsculas : para mayúsculas, nombres de entidad, acrónimos o la primera letra de una frase. Por ejemplo: "she is from microsoft" -> "She is from Microsoft"
  • Filtrado de palabras soeces: enmascaramiento o eliminación de palabras soeces de una oración. Por ejemplo, suponiendo que "abcd" es una palabra soez, la palabra se enmascarará mediante enmascaramiento soez: "I never say abcd" -> "I never say ****"

Microsoft mantiene los generadores base de la canalización de texto para mostrar para las tareas de procesamiento de visualización de uso general. Los generadores base se obtienen de forma predeterminada cuando se usa el servicio voz. Para obtener más información acerca del formato lista para usar, consulte Mostrar formato de texto.

Formato de texto para mostrar personalizado

Además de los generadores base mantenidos por Microsoft, puede definir reglas de formato de texto de visualización personalizadas para adaptar la canalización de formato de texto de visualización a sus escenarios específicos. Las reglas de formato de texto para mostrar personalizadas se definen en un archivo de formato de texto para mostrar personalizado.

El orden de la canalización de formato de texto para mostrar se muestra en este diagrama.

Diagrama de los generadores de formatos de presentación.

ITN personalizado

La filosofía de ITN personalizada basada en patrones es que puede especificar la salida final que desea ver. El servicio de voz determina cómo se pueden hablar las palabras y asignar las expresiones habladas previstas al formato de salida especificado.

Un modelo de ITN personalizado se crea a partir de un conjunto de reglas de ITN. Una regla de ITN es una expresión regular, como la cadena de patrón, que describe:

  • Patrón coincidente de la cadena de entrada
  • El formato deseado de la cadena de salida

Las reglas de ITN predeterminadas proporcionadas por Microsoft se aplican primero. La salida del modelo de ITN predeterminado se usa como entrada del modelo de ITN personalizado. El algoritmo coincidente dentro del modelo de ITN personalizado no distingue mayúsculas de minúsculas.

Hay cuatro categorías de coincidencia de patrones con reglas de ITN personalizadas.

Patrones con literales

Por ejemplo, un desarrollador podría tener un elemento (por ejemplo, un producto) denominado con el formato alfanumérico JO:500. El servicio de voz determina que los usuarios podrían decir la parte de la letra como J O, o podrían decir joe, y la parte numérica como five hundred o five zero zero o five oh oh o five double zero, y a continuación crear un modelo que asigne todas estas posibilidades a JO:500 (incluida la inserción de los dos puntos).

Los patrones se pueden aplicar en paralelo especificando una regla por línea en el archivo de formato de texto para mostrar. Este es un ejemplo de un archivo de formato de texto para mostrar que especifica dos reglas:

JO:500
MM:760

Patrones con caracteres comodín

Puede hacer referencia a una serie completa de elementos alfanuméricos (como JO:500, JO:600, JO:700) sin tener que escribir todas las posibilidades de varias maneras.

Los intervalos de caracteres se pueden especificar con la notación [...], por lo que JO:[5-7]00 equivale a escribir tres patrones.

También hay un conjunto de elementos comodín que se pueden usar. Uno de estos es \d, lo que significa cualquier dígito. Por lo tanto JO:\d00, cubre JO:000, JO:100, y otros hasta JO:900.

Al igual que una expresión regular, hay varias clases de caracteres predefinidas para una regla de ITN:

  • \d : coincide con un dígito de ''0'' a ''9'', y lo genera directamente
  • \l : coincide con una letra (sin distinción entre mayúsculas y minúsculas) y la transduce a minúsculas
  • \u : coincide con una letra (sin distinción entre mayúsculas y minúsculas) y la transduce a mayúsculas
  • \a : coincide con una letra (sin distinción entre mayúsculas y minúsculas) y la genera directamente

También hay expresiones de escape para hacer referencia a caracteres que, de lo contrario, tienen un significado sintáctico especial:

  • \\ : coincidencia y salida del carácter \
  • \( y \)
  • \{ y \}
  • \|
  • \+ y \? y \*

Patrones con notación de estilo regex

Para mejorar la flexibilidad de escritura de patrones, se admiten construcciones de expresiones regulares similares a frases con alternativas y kleene-clausura.

  • Una frase se indica con paréntesis, como (...) : los paréntesis no cuentan literalmente como caracteres que se van a buscar coincidencias.
  • Puede indicar alternativas dentro de una frase con el carácter | como (AB|CDE).
  • Puede agregar un sufijo con ? para indicar que es opcional, + para indicar que se puede repetir o * para indicar ambos. Solo puede sufijar frases con estos caracteres y no caracteres individuales (que es más restrictivo que la mayoría de las implementaciones de expresiones regulares).

Un patrón como (AB|CD)-(\d)+ podría representar construcciones como "AB-9" o "CD-22" y expandirse a palabras habladas como A B nine y C D twenty two (o C D two two).

Patrones con reemplazo explícito

La filosofía general es "nos muestra el aspecto de la salida, y el servicio de voz determina cómo lo dicen las personas" Pero esto no siempre funciona porque algunos escenarios pueden tener formas poco predecibles de decir cosas o las reglas en segundo plano del servicio voz podrían tener lagunas. Por ejemplo, puede haber pronunciaciones coloquiales para iniciales y acrónimos,ZPI que se pueden decir como zippy. En este caso, es poco probable que un patrón como ZPI-\d\d funcione si un usuario dice zippy twenty two. Para este tipo de situación, hay una notación {spoken>written} de formato de texto para mostrar. Este caso en particular podría escribirse {zippy>ZPI}-\d\d.

Esto puede ser útil para controlar cosas que las reglas de asignación de voz pero aún no admiten. Por ejemplo, podría escribir un patrón \d0-\d0 que espera que el sistema comprenda que "-" puede significar un intervalo y debe pronunciarse to, como en twenty to thirty. Pero quizás no lo haga. Por lo tanto, puede escribir un patrón más explícito como \d0{to>-}\d0 e indicarle cómo espera que se lea el guión.

También puede omitir la > y que sigue a la forma escrita para indicar palabras que deben reconocerse pero ignorarse. Por lo tanto, un patrón como {write} (\u.)+ reconoce write A B C y genera A.B.C : quitando la parte write.

Ejemplos de ITN personalizados

Agrupar dígitos

Para agrupar 6 dígitos en dos grupos y agregar un carácter "-" entre ellos:

Regla de ITN: Ejemplo \d\d\d-\d\d\d: "cadence one oh five one fifteen" -> "cadence 105-115"

Dar formato a un nombre de película

Espacio: 1999 es una película famosa, para apoyarla:

Regla de ITN: Ejemplo Space: 1999: "watching space nineteen ninety nine" -> "watching Space: 1999"

Patrón con reemplazo

Regla de ITN: Ejemplo \d[05]{ to >-}\d[05]: fifteen to twenty -> 15-20

Reescritura personalizada

En términos generales, para una cadena de entrada, el modelo de reescritura intenta reemplazar en original phrase la cadena de entrada por la correspondiente new phrase a cada regla de reescritura. Un modelo de reescritura es una colección de reglas de reescritura.

  • Una regla de reescritura es un par de dos frases: la frase original y una nueva frase.
  • Las dos frases están separadas por un carácter TAB. Por ejemplo, original phrase{TAB}new phrase.
  • La frase original coincide (no distingue mayúsculas de minúsculas) y se reemplaza por la nueva frase (distingue mayúsculas de minúsculas). Los caracteres de puntuación gramatical de la frase original se omiten durante la coincidencia.
  • Si alguna regla de reescritura entra en conflicto, la que tiene más tiempo original phrase se usa como coincidencia.

El modelo de reescritura admite mayúsculas gramaticales de manera predeterminada, que escribe en mayúsculas la primera letra de una oración para en-US como configuraciones regionales. Se desactiva si la característica de mayúsculas y minúsculas del formato de texto para mostrar está desactivada en una solicitud de reconocimiento de voz.

Puntuación gramatical

Los caracteres de puntuación gramatical se usan para separar una frase o bien una oración y aclarar cómo se debe leer una frase o una oración.

. , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ،

Estas son las reglas de puntuación gramatical:

  • Los caracteres de puntuación admitidos son para la puntuación gramatical si van seguidos de espacio o al principio o al final de una frase o frase. Por ejemplo, el . en x. y (con un espacio entre . y y) es una puntuación gramatical.
  • Los caracteres de puntuación que están en medio de una palabra (excepto zh-cn y ja-jp) no son puntuación gramatical. En ese caso, son caracteres ordinarios. Por ejemplo, el . en x.y no es una puntuación gramatical.
  • Para zh-cn y ja-jp (configuraciones regionales sin espaciar), los caracteres de puntuación siempre se usan como puntuación gramatical, incluso si están entre caracteres. Por ejemplo, el . en 中.文 es una puntuación gramatical.

Ejemplos de reescritura personalizada

Corrección ortográfica

Es posible que el nombre COVID-19 se reconozca como covered 19. Para asegurarse de que COVID-19 is a virus se muestra en lugar de covered 19 is a virus, use la siguiente regla de reescritura:

#rewrite
covered 19{TAB}COVID-19

Mayúsculas de nombres

Gottfried Wilhelm Leibniz era un matemático alemán. Para asegurarse de que Gottfried Wilhelm Leibniz está puesta en mayúsculas, use la siguiente regla de reescritura:

#rewrite
gottfried leibniz{TAB}Gottfried Leibniz

Palabras soeces personalizadas

Un modelo de palabras soeces personalizado actúa igual que el modelo de palabras soeces base, salvo que usa una lista de frases soeces personalizada. Además, el modelo de palabras soeces personalizadas intenta coincidir (no distingue mayúsculas de minúsculas) todas las frases soeces definidas en el archivo de formato de texto para mostrar.

  • Las frases soeces coinciden (sin distinción entre mayúsculas y minúsculas).
  • Si las reglas de frases soeces entran en conflicto, la frase más larga se usa como coincidencia.
  • Estos caracteres de puntuación no se admiten en una frase soece: . , ? 、 ! : ; ? 。 , ¿ ¡ । ؟ ، .
  • Para las configuraciones regionaleszh-CN y ja-JP, no se admiten frases soeces en inglés. Se admiten palabras soeces en inglés. Se admiten frases soeces para zh-CN y ja-JP configuraciones regionales.

La palabra soez se quita o enmascara en función de la configuración de la solicitud de reconocimiento de voz.

Una vez que se agrega palabras soeces en el archivo de regla de formato de texto para mostrar y se entrena el modelo personalizado, se usa para la salida predeterminada de voz por lotes en texto y voz en tiempo real en texto.

Ejemplos de palabras soeces personalizadas

Estos son algunos ejemplos de cómo enmascarar palabras soeces y frases en el archivo de formato de texto para mostrar.

Ejemplo de una sola palabra soez

Ejemplo de xyz sola palabra soez. Para agregarlo:

#profanity
xyz

Este es un ejemplo de prueba: Turned on profanity masking to mask xyz -> Turned on profanity masking to mask ***

Enmascarar frase soez

Supongamos que abc lmn es una frase soez. Para agregarlo:

#profanity
abc lmn

Este es un ejemplo de prueba: Turned on profanity masking to mask abc lmn -> Turned on profanity masking to mask *** ***

Pasos siguientes