Referencia del lenguaje de marcación de síntesis de voz (SSML) (beta)

La plataforma de Actions on Google admite varias funciones de la versión beta de SSML, además de los elementos de SSML estándar de Actions on Google.

Resumen de las funciones de SSML en versión beta compatibles:

  • <phoneme>: Personaliza la pronunciación de palabras específicas.
  • <say-as interpret-as="duration">: Especifica las duraciones.
  • <voice>: Alterna entre voces en la misma solicitud.
  • <lang>: Usa varios idiomas en la misma solicitud.
  • Puntos temporales: Usa la etiqueta <mark> para mostrar el punto temporal de un punto específico de tu transcripción.

<phoneme>

Puedes usar la etiqueta <phoneme> para producir pronunciaciones personalizadas de palabras intercaladas. Actions on Google acepta los alfabetos fonéticos IPA y X-SAMPA. Consulta la página de fonemas para obtener una lista de idiomas y fonemas compatibles.

Cada aplicación de la etiqueta <phoneme> dirige la pronunciación de una sola palabra:

  <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
  <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>

Marcadores de acentuación

Existen hasta tres niveles de acentuación que se pueden colocar en una transcripción:

  1. Estrés principal: Se indica con ˈ en el IPA y " en X-SAMPA.
  2. Estrés secundario: Se indica con ˌ en el IPA y % en X-SAMPA.
  3. No acentuado: No se indica con un símbolo (en ninguna notación).

Algunos idiomas pueden tener menos de tres niveles o no denotan ninguna posición de acentuación. Consulta la página de fonemas para ver los niveles de estrés disponibles en tu idioma. Los marcadores de estrés se colocan al comienzo de cada sílaba acentuada. Por ejemplo, en inglés de EE.UU.:

Palabra de ejemplo IPA X-SAMPA
Agua ˈwɑːtɚ "wA:t@`
underwater ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

Transcripciones amplias vs. específicas

Como regla general, mantén tus transcripciones más amplias y fonéticas. Por ejemplo, en inglés de EE.UU., transcribe t intervocálico (en lugar de presionar):

Palabra de ejemplo IPA X-SAMPA
mantequilla ˈbʌtɚ en lugar de ˈbʌɾɚ "bVt@` en lugar de "bV4@`

Hay algunos casos en los que el uso de la representación fonética hace que los resultados de TTS no suenen naturales (por ejemplo, si la secuencia de fonemas es difícil de pronunciar).

Un ejemplo es la asimilación de voces para s en inglés. En este caso, la asimilación se debe reflejar en la transcripción:

Palabra de ejemplo IPA X-SAMPA
cats ˈkæts "k{ts
dogs ˈdɑːgz en lugar de ˈdɑːgs "dA:gz en lugar de "dA:gs

Reducción

Cada sílaba debe contener una (y solo una) vocal. Esto significa que debes evitar las consonantes silábicas y, en su lugar, transcribirlas con una vocal reducida. Por ejemplo:

Palabra de ejemplo IPA X-SAMPA
kitten ˈkɪtən en lugar de ˈkɪtn "kIt@n en lugar de "kitn
kettle ˈkɛtəl en lugar de ˈkɛtl "kEt@l en lugar de "kEtl

Silabeo

De manera opcional, puedes especificar límites de sílabas con .. Cada sílaba debe contener una (y solo una) vocal. Por ejemplo:

Palabra de ejemplo IPA X-SAMPA
readability ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

Duraciones

La plataforma Actions on Google admite <say-as interpret-as="duration"> para leer correctamente las duraciones. Por ejemplo, el siguiente ejemplo se verbalizaría como "cinco horas y treinta minutos":

<say-as interpret-as="duration" format="h:m">5:30</say-as>

La string de formato admite los siguientes valores:

Abreviatura Valor
h hora
m minuto
s segundos
ms milésimas de segundo

<voice>

La etiqueta <voice> te permite usar más de una voz en una sola solicitud de SSML. En el siguiente ejemplo, la voz predeterminada es una voz masculina en inglés. Todas las palabras se sintetizarán en esta voz, excepto “qu'est-ce qui t'amène ici”, que se verbalizará en francés con una voz femenina en lugar del idioma (inglés) y género (masculino) predeterminados.

<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui
t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>

Como alternativa, puedes usar una etiqueta <voice> para especificar una voz individual (el nombre de la voz en la página de idiomas y voces compatibles) en lugar de especificar una language o gender:

<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est
mignon</voice><break time="250ms"/> said a pet shop
owner</speak>

Cuando usas la etiqueta <voice>, Actions on Google espera recibir un name (el nombre de la voz que deseas usar) o una combinación de los siguientes atributos. Los tres atributos son opcionales, pero debes proporcionar al menos uno si no proporcionas un name.

  • gender: Es male, female o neutral.
  • variant: Se usa como tiebreaker en los casos en que existen varias posibilidades de qué voz usar según tu configuración.
  • language: El idioma que deseas. Solo se puede especificar un idioma en una etiqueta <voice> determinada. Especifica tu idioma en formato BCP-47. Puedes encontrar el código BCP-47 para el idioma en la columna código de idioma de la página de idiomas y voces compatibles.

También puedes controlar la prioridad relativa de cada uno de los atributos gender, variant y language mediante dos etiquetas adicionales: required y ordering.

  • required: Si un atributo se designa como required y no se configura de forma correcta, la solicitud falla.
  • ordering: Cualquier atributo enumerado después de una etiqueta ordering se considera como atributo preferido en lugar de obligatorio. El SSML considera los atributos preferidos según el mejor esfuerzo en el orden en que se enumeran después de la etiqueta ordering. Si algún atributo preferido se configura de forma incorrecta, es posible que Actions on Google siga mostrando una voz válida, pero sin la configuración incorrecta.

Ejemplos de configuración mediante las etiquetas required y ordering:

<speak>And there it was <voice language="en-GB" gender="male" required="gender"
ordering="gender language">a flying bird </voice>roaring in the skies for the
first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female"
ordering="language gender">Sunday Funday.</voice></speak>

<lang>

Puedes usar <lang> para incluir texto en varios idiomas dentro de la misma solicitud de SSML. Todos los idiomas se sintetizarán con la misma voz, a menos que uses la etiqueta <voice> para cambiar la voz de forma explícita. La cadena xml:lang debe contener el idioma de destino en formato BCP-47 (este valor aparece como "código de idioma" en la tabla voces compatibles). En el siguiente ejemplo, "chat" se verbalizará en francés en lugar del idioma predeterminado (inglés):

<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>

La plataforma de Actions on Google admite la etiqueta <lang> según el criterio del mejor esfuerzo. No todas las combinaciones de idiomas producen los mismos resultados de calidad si se especifica en la misma solicitud de SSML. En algunos casos, una combinación de idiomas puede producir un efecto que es detectable, pero sutil o percibido como negativo. Problemas conocidos:

  • El japonés con caracteres kanji no es compatible con la etiqueta <lang>. La entrada se translitera y se lee como caracteres chinos.
  • Los idiomas semíticos, como el árabe, el hebreo y el persa, no son compatibles con la etiqueta <lang> y generan silencio. Si quieres usar cualquiera de estos idiomas, te recomendamos que uses la etiqueta <voice> para cambiar a una voz que hable el idioma deseado (si está disponible).