¿Qué es la 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:
- Instalación de Apache Maven.
- Abra un símbolo del sistema donde quiera el nuevo proyecto y cree un archivo
pom.xml
. - 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.40.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
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("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);
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("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 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 | Sí | ||
break | strength | Sí | |
time | Sí | ||
silence | type | Leading, Trailing, Comma-exact, etc. | No |
value | No | ||
emphasis | Nivel | No | |
lang | No | ||
lexicon | uri | Sí | |
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 | Sí | ||
phoneme | alfabeto | ipa, sapi, ups, etc. | Sí |
ph | Sí | ||
prosody | contour | Compatibilidad con el nivel de oraciones, nivel de palabra solo en en-US y zh-CN | Sí |
pitch | Sí | ||
range | Sí | ||
rate | Sí | ||
volumen | Sí | ||
s | Sí | ||
say-as | interpret-as | characters, spell-out, number_digit, date, etc. | Sí |
format | Sí | ||
detail | Sí | ||
sub | alias | Sí | |
speak | Sí | ||
voice | No |