Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- Instale Apache Maven.
- Abra un símbolo del sistema donde desee crear el nuevo proyecto y cree un archivo nuevo
pom.xml. - 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> - 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 | Sí | ||
| pausa | fuerza | Sí | |
| tiempo | Sí | ||
| silencio | tipo | Leading, Tailing, Coma-exacto, etc. | No |
| valor | No | ||
| énfasis | nivel | No | |
| idioma | No | ||
| léxico | URI | Sí | |
| Matemática | No | ||
| msttsaudioduration (duración de audio) | valor | No | |
| msttsbackgroundaudio | src | No | |
| volumen | No | ||
| fadein | No | ||
| fadeout | No | ||
| msttsexpress-as | estilo | Sí1 | |
| styledegree | No | ||
| rol | No | ||
| msttssilence | No | ||
| msttsviseme | tipo | redlips_front, FacialExpression | No |
| p | Sí | ||
| fonema | alfabeto | ipa, sapi, ups, etc. | Sí |
| ph | Sí | ||
| prosodia | contorno | Soporte a nivel de oraciones, solo a nivel de palabras en en-US y zh-CN | Sí |
| tono | Sí | ||
| rango | Sí | ||
| tasa / tarifa | Sí | ||
| volumen | Sí | ||
| s | Sí | ||
| say-as | interpretar como | caracteres, deletreo, número_dígito, fecha, etc. | Sí |
| formato | Sí | ||
| detalle | Sí | ||
| sub | alias | Sí | |
| hablar | Sí | ||
| voz | No |
1 El msttsexpress-as estilo solo se admite para la en-US-JennyNeural voz.