Voz insertada

La voz insertada está diseñada para escenarios en el dispositivo de conversión de voz a texto y de texto a voz en los que la conectividad en la nube es intermitente o no está disponible. Por ejemplo, puede usar voz insertada en equipos industriales, una unidad de aire acondicionado habilitada para voz o un automóvil que pueda viajar fuera del alcance. También puede desarrollar soluciones híbridas en la nube 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 tener en cuenta los contenedores desconectados.

Importante

Microsoft limita el acceso a la voz insertada. Puede solicitar acceso a través de la revisión de acceso limitado a voz insertada de la Voz de Azure AI. 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 versiones posteriores) para C#, C++ y Java. Consulte los requisitos generales de instalación del SDK de Voz para conocer los detalles específicos del lenguaje de programación y la plataforma de destino.

Selección del entorno de destino

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

El TTS insertado con voces neuronales solo se admite en Arm64.

Limitaciones

La voz insertada solo está disponible con los SDK de C#, C++y Java. Los demás SDK de Voz, la CLI de Voz y las API de REST no admiten voz insertada.

El reconocimiento de voz integrado solo admite formatos de audio WAV mono codificado en PCM de 16 bits, 8 kHz o 16 kHz.

Las voces neuronales integradas admiten RIFF/RAW de 24 kHz, con un requisito de 100 MB de RAM.

Paquetes de SDK de voz insertada

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 insertado
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS Necesario para la síntesis de voz insertada
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime Necesario para el reconocimiento y la síntesis de voz insertada
Microsoft.CognitiveServices.Speech.Extension.Telemetry Necesario para el reconocimiento y la síntesis de voz insertada

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 insertado
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS Necesario para la síntesis de voz insertada
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime Necesario para el reconocimiento y la síntesis de voz insertada
Microsoft.CognitiveServices.Speech.Extension.Telemetry Necesario para el reconocimiento y la síntesis de voz insertada

Selección del entorno de destino

En el caso de las aplicaciones insertadas de Java, agregue client-sdk-embedded (.jar) como dependencia. Este paquete admite voz híbrida, insertada y en la nube.

Importante

No agregue client-sdk 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. Instalación de Apache Maven.
  2. Abra un símbolo del sistema donde quiera el nuevo proyecto y cree un archivo pom.xml.
  3. Copie el contenido XML siguiente 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.37.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

En el caso de la voz insertada, debe descargar los modelos de reconocimiento de voz para conversión de voz en texto y voces para texto a voz. Se proporcionan instrucciones después de completar correctamente el proceso de revisión de acceso limitado.

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

Todas las configuraciones regionales de texto aquí (excepto fa-IR, persa (Irán)) están disponibles de forma inmediata con 1 voz femenina seleccionada y 1 voz masculina seleccionada. Agradecemos lo que tenga que decir para ayudarnos a sopesar la demanda de más idiomas y voces.

Configuración de voz insertada

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 objeto SpeechConfig con una clave de recurso de voz y una región. En el caso de la voz insertada, no se usa un recurso de voz. En lugar de un recurso en la nube, se usan los modelos y voces que descarga en el dispositivo local.

Use el objeto EmbeddedSpeechConfig 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 de texto a voz, puede usar el mismo objeto EmbeddedSpeechConfig 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("MODEL_KEY"));

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

Sugerencia

La función GetEnvironmentVariable se define en el inicio rápido de conversión de voz en texto y en el inicio rápido de conversión 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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    GetEnvironmentVariable("VOICE_KEY"));
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("MODEL_KEY"));

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

Ejemplos de código de voz insertada

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

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

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

Voz híbrida

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

Con la configuración de voz híbrida para la conversión de voz en texto (modelos de reconocimiento), se usa la voz insertada cuando se produce un error en la conexión al servicio en la nube después de los 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 la conversión de texto a voz (voces), las síntesis insertadas y en la nube se ejecutan en paralelo y el resultado final se selecciona en función de la velocidad de la 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 el inicio rápido de conversión de voz en texto y en el inicio rápido de conversión de texto a voz. Para ejecutar los inicios rápidos para la voz insertada, puede reemplazar SpeechConfig por EmbeddedSpeechConfig o HybridSpeechConfig. La mayoría de los demás códigos de reconocimiento y síntesis de voz son los mismos, ya sea con una configuración en la nube, integrada o híbrida.

Funcionalidades de voces insertadas

En el caso de las voces insertadas, es esencial tener en cuenta que es posible que algunas etiquetas SSML no se admita actualmente debido a las 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 Compatibilidad con NTTS insertado
audio src No
marcador
break strength No
time No
silence type Leading, Trailing, Comma-exact, etc. No
value No
emphasis Nivel No
lang No
lexicon uri
matemáticas No
msttsaudioduration value No
msttsbackgroundaudio src No
volumen No
fadein No
fadeout No
msttsexpress-as style No
styledegree No
rol No
msttssilence No
msttsviseme type redlips_front, FacialExpression No
p
phoneme alfabeto ipa, sapi, ups, etc.
ph
prosody contour Compatibilidad con el nivel de oraciones, nivel de palabra solo en en-US y zh-CN
pitch
range
rate
volumen
s
say-as interpret-as characters, spell-out, number_digit, date, etc.
format
detail
sub alias
speak
voice No

Pasos siguientes