¿Qué es la voz integrada?

El habla embebida está diseñada para escenarios de voz a texto y texto a voz en dispositivos en los que la conectividad en la nube es intermitente o no está disponible. Por ejemplo, puede usar voz integrada en equipos industriales, una unidad de aire acondicionado con reconocimiento de voz o un automóvil que pueda desplazarse fuera de cobertura. También puede desarrollar soluciones de nube híbrida y sin conexión. En escenarios en los que los dispositivos deben estar en un entorno seguro, como una entidad bancaria o gubernamental, primero debe considerar los contenedores desconectados.

Importante

Microsoft limita el acceso a la voz insertada. Puede solicitar acceso a través de la Azure Speech in Foundry Tools embedded speech limited access review. Para obtener más información, consulte Acceso limitado para voz insertada.

Requisitos de la plataforma

La voz insertada se incluye con el SDK de Voz (versión 1.24.1 y posterior) para C#, C++y Java. Consulte los requisitos generales de instalación del SDK de Voz para obtener detalles específicos del lenguaje de programación y la plataforma de destino.

A continuación se muestran estimaciones generales del consumo de memoria con voz insertada. Los números finales dependen de la configuración de funcionalidades.

  • Reconocimiento de voz o traducción: tamaño total de los archivos de un modelo + 200 MB.
  • Síntesis de voz: 100-200 MB en función de la configuración regional.

Elección del entorno de destino

Requiere Android 8.0 (nivel de API 26) o superior en hardware Arm64 (arm64-v8a) o Arm32 (armeabi-v7a).

Limitaciones

  • La voz insertada solo está disponible con los SDK de C#, C++y Java. Los otros SDK de voz, la CLI de voz y las API REST no admiten la voz insertada.
  • El reconocimiento de voz incrustado solo admite formatos de audio WAV en mono y codificados con PCM de 16 bits, a 8 kHz o 16 kHz.
  • Las voces neuronales incrustadas admiten RIFF/RAW de 16 o 24 kHz.

Paquetes de SDK de voz insertados

En el caso de las aplicaciones insertadas de C#, instale el siguiente SDK de Voz para paquetes de C#:

Paquete Descripción
Microsoft. CognitiveServices.Speech Necesario para usar el SDK de Voz
Microsoft. CognitiveServices.Speech.Extension.Embedded.SR Necesario para el reconocimiento de voz embebido
Microsoft. CognitiveServices.Speech.Extension.Embedded.TTS Necesario para la síntesis de voz integrada
Microsoft. CognitiveServices.Speech.Extension.ONNX.Runtime Necesario para el reconocimiento y la síntesis de voz integrados
Microsoft.CognitiveServices.Speech.Extension.Telemetry Necesario para el reconocimiento y la síntesis de voz integrados

Para aplicaciones embebidas de C++, instale los siguientes paquetes del SDK de Voz para C++.

Paquete Descripción
Microsoft. CognitiveServices.Speech Necesario para usar el SDK de Voz
Microsoft. CognitiveServices.Speech.Extension.Embedded.SR Necesario para el reconocimiento de voz embebido
Microsoft. CognitiveServices.Speech.Extension.Embedded.TTS Necesario para la síntesis de voz integrada
Microsoft. CognitiveServices.Speech.Extension.ONNX.Runtime Necesario para el reconocimiento y la síntesis de voz integrados
Microsoft.CognitiveServices.Speech.Extension.Telemetry Necesario para el reconocimiento y la síntesis de voz integrados

Elección del entorno de destino

Para aplicaciones Java embebidas, agregue client-sdk-embedded (.jar) como dependencia. Este paquete admite voz híbrida, insertada y en la nube.

Importante

No agregue el sdk de cliente en el mismo proyecto, ya que solo admite servicios de voz en la nube.

Siga estos pasos para instalar el SDK de Voz para Java mediante Apache Maven:

  1. Instale Apache Maven.
  2. Abra un símbolo del sistema donde desee crear el nuevo proyecto y cree un archivo nuevo pom.xml.
  3. Copie el siguiente contenido XML en pom.xml:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.microsoft.cognitiveservices.speech.samples</groupId>
        <artifactId>quickstart-eclipse</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
            </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
            <groupId>com.microsoft.cognitiveservices.speech</groupId>
            <artifactId>client-sdk-embedded</artifactId>
            <version>1.43.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. Ejecute el siguiente comando de Maven para instalar el SDK de Voz y las dependencias.
    mvn clean dependency:copy-dependencies
    

Modelos y voces

Para la voz integrada, debe descargar los modelos de reconocimiento de voz para voz a texto y voces para texto a voz. Se proporcionan instrucciones tras completar correctamente el proceso de revisión de acceso limitado .

Los siguientes modelos de voz en texto están disponibles: da-DK, de-DE, en-AU, en-CA, en-GB, en-IE, en-IN, en-NZ, en-US, es-ES, es-MX, fr-CAfr-FR, it-IT, ja-JP, ja-JP, ko-KR, pt-BR, pt-PT, zh-CN, zh-HKy zh-TW.

Todas las configuraciones regionales de texto a voz aquí (excepto fa-IR, persa (Irán)) están disponibles inmediatamente con 1 voz femenina seleccionada y/o 1 voz masculina seleccionada. Le damos la bienvenida a su entrada para ayudarnos a medir la demanda de más idiomas y voces.

Configuración de voz embebida

En el caso de las aplicaciones conectadas a la nube, como se muestra en la mayoría de los ejemplos del SDK de Voz, se usa el SpeechConfig objeto con una clave de API y un punto de conexión. Para voz embebida, no se utiliza un recurso de Foundry para el habla. En lugar de un recurso en la nube, se usan los modelos y voces que se descargan en el dispositivo local.

Use el EmbeddedSpeechConfig objeto para establecer la ubicación de los modelos o voces. Si la aplicación se usa para la conversión de voz en texto y texto en voz, puede usar el mismo EmbeddedSpeechConfig objeto para establecer la ubicación de los modelos y las voces.

// Provide the location of the models and voices.
List<string> paths = new List<string>();
paths.Add("C:\\dev\\embedded-speech\\stt-models");
paths.Add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.FromPaths(paths.ToArray());

// For speech to text
embeddedSpeechConfig.SetSpeechRecognitionModel(
    "Microsoft Speech Recognizer en-US FP Model V8",
    Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));

// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);

Propina

La GetEnvironmentVariable función se define en el inicio rápido de conversión de voz en texto y en el inicio rápido de texto a voz.

// Provide the location of the models and voices.
vector<string> paths;
paths.push_back("C:\\dev\\embedded-speech\\stt-models");
paths.push_back("C:\\dev\\embedded-speech\\tts-voices");
auto embeddedSpeechConfig = EmbeddedSpeechConfig::FromPaths(paths);

// For speech to text
embeddedSpeechConfig->SetSpeechRecognitionModel((
    "Microsoft Speech Recognizer en-US FP Model V8",
    GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));

// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig->SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat::Riff24Khz16BitMonoPcm);
// Provide the location of the models and voices.
List<String> paths = new ArrayList<>();
paths.add("C:\\dev\\embedded-speech\\stt-models");
paths.add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.fromPaths(paths);

// For speech to text
embeddedSpeechConfig.setSpeechRecognitionModel(
    "Microsoft Speech Recognizer en-US FP Model V8",
    System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));

// For text to speech
embeddedSpeechConfig.setSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);

Ejemplos de código de voz insertados

Puede encontrar ejemplos de voz listos para usar integrados en GitHub. Para obtener comentarios sobre proyectos desde cero, consulte documentación específica de ejemplos:

Puede encontrar ejemplos de voz listos para usar integrados en GitHub. Para obtener comentarios sobre proyectos desde cero, consulte documentación específica de ejemplos:

Puede encontrar ejemplos de voz listos para usar integrados en GitHub. Para obtener comentarios sobre proyectos desde cero, consulte documentación específica de ejemplos:

Voz híbrida

La voz híbrida con el HybridSpeechConfig objeto usa de forma predeterminada el servicio de voz en la nube y la voz integrada como alternativa en caso de que la conectividad en la nube sea limitada o lenta.

Con la configuración de voz híbrida para voz en texto (modelos de reconocimiento), la voz insertada se usa cuando se produce un error en la conexión con el servicio en la nube después de intentos repetidos. El reconocimiento podría seguir usando el servicio en la nube de nuevo si la conexión se reanuda más adelante.

Con la configuración de voz híbrida para texto a voz (voces), la síntesis insertada y en la nube se ejecuta en paralelo y el resultado final se selecciona en función de la velocidad de respuesta. El mejor resultado se evalúa de nuevo en cada nueva solicitud de síntesis.

Voz en la nube

En el caso de la voz en la nube, use el objeto SpeechConfig, como se muestra en la guía de inicio rápido de voz a texto y la guía de inicio rápido de texto a voz. Para ejecutar las guías de inicio rápido para voz insertada, puede reemplazar SpeechConfig con EmbeddedSpeechConfig o HybridSpeechConfig. La mayoría del otro código de reconocimiento de voz y síntesis son los mismos, ya sea mediante la nube, la incrustación o la configuración híbrida.

Funcionalidades de voces incrustadas

En el caso de las voces insertadas, es esencial tener en cuenta que es posible que algunas etiquetas del lenguaje de marcado de síntesis de voz (SSML) no se admita actualmente debido a diferencias en la estructura del modelo. Para obtener información detallada sobre las etiquetas SSML no admitidas, consulte la tabla siguiente.

Nivel 1 Nivel 2 Valores secundarios Soporte en NTTS integrado
audio src No
Favorito
pausa fuerza
tiempo
silencio tipo Leading, Tailing, Coma-exacto, etc. No
valor No
énfasis nivel No
idioma No
léxico URI
Matemática No
msttsaudioduration (duración de audio) valor No
msttsbackgroundaudio src No
volumen No
fadein No
fadeout No
msttsexpress-as estilo 1
styledegree No
rol No
msttssilence No
msttsviseme tipo redlips_front, FacialExpression No
p
fonema alfabeto ipa, sapi, ups, etc.
ph
prosodia contorno Soporte a nivel de oraciones, solo a nivel de palabras en en-US y zh-CN
tono
rango
tasa / tarifa
volumen
s
say-as interpretar como caracteres, deletreo, número_dígito, fecha, etc.
formato
detalle
sub alias
hablar
voz No

1 El msttsexpress-as estilo solo se admite para la en-US-JennyNeural voz.