Qu’est-ce que la reconnaissance vocale incorporée ?
Le service Embedded Speech est conçu pour les scénarios de reconnaissance vocale et de synthèse vocale sur appareil où la connectivité cloud est intermittente ou indisponible. Par exemple, vous pouvez utiliser la reconnaissance vocale intégrée avec du matériel industriel, une unité de climatisation à commande vocale ou une voiture susceptible de se déplacer dans une zone hors de portée. Vous pouvez également développer des solutions cloud hybrides et hors connexion. Pour les scénarios où vos appareils doivent se trouver dans un environnement sécurisé comme un établissement bancaire ou une entité gouvernementale, vous devez d’abord envisager d’utiliser des conteneurs déconnectés.
Important
Microsoft limite l’accès à Embedded Speech. Vous pouvez demander un accès par le biais de la révision d’accès limité au message incorporé Azure AI Speech. Pour plus d’informations, consultez Accès limité pour Embedded Speech.
Plateforme requise
Embedded Speech est inclus dans le SDK Speech (version 1.24.1 et ultérieure) pour C#, C++ et Java. Reportez-vous aux exigences générales d’installation du SDK Speech pour connaître les détails propres aux langages de programmation et plateformes cibles.
Choisir votre environnement cible
Nécessite Android 7.0 (API niveau 24) ou une ultérieure sur du matériel Arm64 (arm64-v8a
) ou Arm32 (armeabi-v7a
).
La synthèse vocale incorporée avec des voix neuronales est uniquement prise en charge sur Arm64.
Limites
Embedded Speech est uniquement disponible avec les SDK C#, C++ et Java. Les autres SDK Speech, l’interface CLI Speech et les API REST ne prennent pas en charge Embedded Speech.
La reconnaissance vocale incorporée prend uniquement en charge les format audio WAV codé par PCM mono 16 bits, 8 kHz ou 16kHz.
Les voix neuronales incorporées prennent en charge le RIFF/RAW de 24 kHz, avec une exigence de RAM de 100 Mo.
Packages SDK Speech incorporés
Pour les applications incorporées C#, installez le kit de développement logiciel (SDK) Speech suivant pour les packages C# :
Package | Description |
---|---|
Microsoft.CognitiveServices.Speech | Obligatoire pour utiliser le kit de développement logiciel (SDK) Speech |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Obligatoire pour la reconnaissance vocale incorporée |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Obligatoire pour la synthèse vocale incorporée |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Obligatoire pour la reconnaissance et la synthèse vocale incorporées |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Obligatoire pour la reconnaissance et la synthèse vocale incorporées |
Pour les applications incorporées C++, installez le kit de développement logiciel (SDK) Speech suivant pour les packages C++ :
Package | Description |
---|---|
Microsoft.CognitiveServices.Speech | Obligatoire pour utiliser le kit de développement logiciel (SDK) Speech |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Obligatoire pour la reconnaissance vocale incorporée |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Obligatoire pour la synthèse vocale incorporée |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Obligatoire pour la reconnaissance et la synthèse vocale incorporées |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Obligatoire pour la reconnaissance et la synthèse vocale incorporées |
Choisir votre environnement cible
Pour les applications Java incorporées, ajoutez client-sdk-embedded (.jar
) en tant que dépendance. Ce package prend en charge les services vocaux cloud, incorporés et hybrides.
Important
N’ajoutez pas de client-sdk dans le même projet, car il prend uniquement en charge les services de reconnaissance vocale cloud.
Procédez comme suit pour installer le Kit de développement logiciel (SDK) Speech pour Java à l’aide d’Apache Maven :
- Installez Apache Maven.
- Ouvrez une invite de commandes à l’emplacement où vous souhaitez placer le nouveau projet, puis créez un nouveau fichier
pom.xml
. - Copiez le contenu XML suivant dans
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.42.0</version> </dependency> </dependencies> </project>
- Exécutez la commande Maven suivante pour installer le kit de développement logiciel (SDK) Speech et les dépendances.
mvn clean dependency:copy-dependencies
Modèles et voix
Pour Embedded Speech, vous avez besoin de télécharger les modèles de reconnaissance vocale pour la reconnaissance vocale et des voix pour la synthèse vocale. Des instructions sont fournies une fois le processus de révision de l’accès limité correctement terminé.
Les modèles de reconnaissance vocale suivants sont disponibles : 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 et zh-TW.
Tous les paramètres régionaux de synthèse vocale ici (à l’exception de fa-IR, Persan (Iran)) sont disponibles immédiatement avec 1 voix féminine et/ou 1 voix masculine sélectionnées. Nous vous invitons à nous faire part de vos commentaires pour nous aider à évaluer la demande de plus de langues et de voix.
Configuration d’Embedded Speech
Pour les applications connectées au cloud, comme indiqué dans la plupart des exemples du SDK Speech, vous utilisez l’objet SpeechConfig
avec une clé de ressource Speech et une région. Pour Embedded Speech, vous n’utilisez pas de ressource Speech. Au lieu d’une ressource cloud, vous utilisez les modèles et voix que vous téléchargez sur votre appareil local.
Utilisez l’objet EmbeddedSpeechConfig
pour définir l’emplacement des modèles ou des voix. Si votre application est utilisée à la fois pour la reconnaissance vocale et la synthèse vocale, vous pouvez utiliser le même objet EmbeddedSpeechConfig
pour définir l’emplacement des modèles et des voix.
// 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);
Conseil
La fonction GetEnvironmentVariable
est définie dans le guide de démarrage rapide de la reconnaissance vocale et le guide de démarrage rapide de la synthèse vocale.
// 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);
Exemples de code vocal incorporé
Vous trouverez des exemples Embedded Speech prêts à l’emploi sur GitHub. Pour obtenir des remarques sur les projets à partir de zéro, consultez la documentation spécifique des exemples :
Vous trouverez des exemples Embedded Speech prêts à l’emploi sur GitHub. Pour obtenir des remarques sur les projets à partir de zéro, consultez la documentation spécifique des exemples :
Vous trouverez des exemples Embedded Speech prêts à l’emploi sur GitHub. Pour obtenir des remarques sur les projets à partir de zéro, consultez la documentation spécifique des exemples :
Hybrid Speech
Hybrid Speech avec l’objet HybridSpeechConfig
utilise le service Speech cloud par défaut et le service Embedded Speech en solution de secours si la connectivité cloud est limitée ou lente.
Avec la configuration Hybrid Speech pour la reconnaissance vocale (modèles de reconnaissance), Embedded Speech est utilisé quand la connexion au service cloud échoue après de multiples tentatives. Il est possible que la reconnaissance continue à réutiliser le service cloud si la connexion reprend ultérieurement.
Avec la configuration Hybrid Speech pour la synthèse vocale (voix), une synthèse incorporée et cloud sont exécutées en parallèle et le résultat final est sélectionné en fonction de la rapidité de la réponse. Le meilleur résultat est évalué à nouveau sur chaque nouvelle requête de synthèse.
Cloud Speech
Pour Cloud Speech, vous utilisez l’objet SpeechConfig
, comme indiqué dans le guide de démarrage rapide de la reconnaissance vocale et le guide de démarrage rapide de la synthèse vocale. Pour exécuter les guides de démarrage rapide pour Embedded Speech, vous pouvez remplacer SpeechConfig
par EmbeddedSpeechConfig
ou HybridSpeechConfig
. La plupart des autres codes de reconnaissance vocale et de synthèse vocale sont les mêmes, qu’ils utilisent une configuration cloud, incorporée ou hybride.
Fonctionnalités de voix incorporées
Pour les voix incorporées, il est primordial de noter que certaines balises SSML peuvent ne pas être actuellement prises en charge en raison de différences dans la structure du modèle. Pour plus d’informations sur les balises SSML non prises en charge, reportez-vous au tableau suivant.
Niveau 1 | Niveau 2 | Sous-valeurs | Prise en charge dans NTTS incorporé |
---|---|---|---|
audio | src | Non | |
signet | Oui | ||
break | strength | Oui | |
time | Oui | ||
silence | type | De début, de fin, exact à la virgule près, etc. | Non |
value | No | ||
emphasis | level | Non | |
lang | Non | ||
lexicon | uri | Oui | |
math | Non | ||
msttsaudioduration | value | Non | |
msttsbackgroundaudio | src | Non | |
volume | Non | ||
fadein | Non | ||
fadeout | Non | ||
msttsexpress-as | style | Non | |
styledegree | Non | ||
role | Non | ||
msttssilence | Non | ||
msttsviseme | type | redlips_front, FacialExpression | Non |
p | Oui | ||
Un phonème | alphabet | ipa, sapi, ups, etc. | Oui |
ph | Oui | ||
prosodie | contour | Prise en charge au niveau des phrases, au niveau du mot uniquement pour en-US et zh-CN | Oui |
pitch | Oui | ||
range | Oui | ||
rate | Oui | ||
volume | Oui | ||
s | Oui | ||
prononcer | interpret-as | caractères, orthographe, number_digit, date, etc. | Oui |
format | Oui | ||
detail | Oui | ||
sub | alias | Oui | |
speak | Oui | ||
voice | Non |