Was ist eingebettete Sprache?
Eingebettete Sprache ist für die Geräteszenarien Spracherkennung und Sprachsynthese konzipiert, in denen die Cloud-Konnektivität zeitweilig oder nicht verfügbar ist. Sie können beispielsweise eingebettete Sprache in industriell eingesetzten Geräten, einer sprachgesteuerten Klimaanlage oder einem Fahrzeug verwenden, das außerhalb der Reichweite fahren kann. Sie können auch Hybrid Cloud- und Offline-Lösungen entwickeln. In Szenarien, in denen sich Ihre Geräte in einer sicheren Umgebung wie einer Bank- oder Behörden-Entität befinden müssen, sollten Sie zunächst getrennte Container in Betracht ziehen.
Wichtig
Microsoft schränkt den Zugriff auf eingebettete Sprache ein. Sie können den Zugriff über die eingeschränkte Zugriffsüberprüfung für eingebettete Sprache von Azure KI Speech beantragen. Weitere Informationen finden Sie unter Eingeschränkter Zugriff für eingebettete Sprache.
Plattformanforderungen
Eingebettete Sprache ist im Speech-SDK (Version 1.24.1 und höher) für C#, C++ und Java enthalten. Einzelheiten zu Programmiersprachen und Zielplattformen finden Sie in den allgemeinen Installationsanforderungen für das Speech-SDK.
Auswählen Ihrer Zielumgebung
Erfordert Android 7.0 (API-Ebene 24) oder höher auf Arm64- (arm64-v8a
) oder Arm32-Hardware (armeabi-v7a
).
Eingebettetes TTS mit neuronalen Stimmen wird nur auf Arm64 unterstützt.
Einschränkungen
Eingebettete Sprache ist nur mit C#-, C++- und Java-SDKs verfügbar. Die anderen Speech-SDKs, Speech-CLI und REST-APIs unterstützen keine eingebettete Sprache.
Eingebettete Spracherkennung unterstützt nur mono 16 Bit, 8 kHz oder 16 kHz PCM-codierte WAV-Audioformate.
Eingebettete neuronale Stimmen unterstützen 24 kHz RIFF/RAW mit einer RAM-Anforderung von 100 MB.
Eingebettete Sprach-SDK-Pakete
Installieren Sie für eingebettete C#-Anwendungen die folgenden Speech SDK für C#-Pakete:
Paket | BESCHREIBUNG |
---|---|
Microsoft.CognitiveServices.Speech | Erforderlich für die Verwendung des Speech SDK |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Erforderlich für eingebettete Spracherkennung |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Erforderlich für eingebettete Sprachsynthese |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Erforderlich für eingebettete Spracherkennung und -synthese |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Erforderlich für eingebettete Spracherkennung und -synthese |
Installieren Sie für eingebettete C++-Anwendungen die folgenden Speech SDK für C++-Pakete:
Paket | BESCHREIBUNG |
---|---|
Microsoft.CognitiveServices.Speech | Erforderlich für die Verwendung des Speech SDK |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Erforderlich für eingebettete Spracherkennung |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Erforderlich für eingebettete Sprachsynthese |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Erforderlich für eingebettete Spracherkennung und -synthese |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Erforderlich für eingebettete Spracherkennung und -synthese |
Auswählen Ihrer Zielumgebung
Fügen Sie für eingebettete Java-Anwendungen client-sdk-embedded (.jar
) als Abhängigkeit hinzu. Dieses Paket unterstützt Cloud-, eingebettete und hybride Sprache.
Wichtig
Fügen Sie demselben Projekt nicht das Client-SDK hinzu, da es nur Cloud-Sprachdienste unterstützt.
Führen Sie die folgenden Schritte aus, um das Speech SDK für Java mithilfe von Apache Maven zu installieren:
- Installieren Sie Apache Maven.
- Öffnen Sie am gewünschten Speicherort für das neue Projekt eine Eingabeaufforderung, und erstellen Sie eine neue
pom.xml
-Datei. - Kopieren Sie den folgenden XML-Inhalt in
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>
- Führen Sie den folgenden Maven-Befehl aus, um das Speech SDK und Abhängigkeiten zu installieren.
mvn clean dependency:copy-dependencies
Modelle und Stimmen
Für eingebettete Sprache müssen Sie die Spracherkennungsmodelle für die Spracherkennung und Stimmen für die Sprachsynthese herunterladen. Anweisungen werden nach erfolgreichem Abschluss des Prozesses zur eingeschränkten Zugriffsüberprüfung bereitgestellt.
Folgende Sprache-in-Text-Modelle stehen zur Verfügung: 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.
Alle hier verfügbaren Texte zu Sprachgebietsschemas (außer fa-IR, Persisch (Iran)) sind sofort mit entweder 1 ausgewählten weiblichen und/oder 1 ausgewählten männlichen Stimme verfügbar. Wir freuen uns über Ihre Anregungen, die uns helfen, den Bedarf an weiteren Sprachen und Stimmen zu ermitteln.
Eingebettete Sprachkonfiguration
Für mit der Cloud verbundene Anwendungen verwenden Sie, wie in den meisten Speech SDK-Beispielen gezeigt, das Objekt SpeechConfig
mit einem Speech-Ressourcenschlüssel und einer Region. Für eingebettete Sprache verwenden Sie keine Speech-Ressource. Anstelle einer Cloudressource verwenden Sie die Modelle und Stimmen, die Sie auf Ihr lokales Gerät heruntergeladen haben.
Verwenden Sie das Objekt EmbeddedSpeechConfig
, um die Position der Modelle oder Stimmen festzulegen. Wenn Ihre Anwendung sowohl für Spracherkennung als auch für Sprachsynthese verwendet wird, können Sie dasselbe EmbeddedSpeechConfig
-Objekt verwenden, um die Position der Modelle und Stimmen festzulegen.
// 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);
Tipp
Die Funktion GetEnvironmentVariable
wird im Schnellstart für Spracherkennung und im Schnellstart für Sprachsynthese definiert.
// 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);
Eingebettete Sprachcodebeispiele
Sie finden einsatzbereite Beispiele für eingebettete Spracherkennungen auf GitHub. Hinweise zu kompletten Projekten finden Sie in der Dokumentation zu den einzelnen Beispielen:
Sie finden einsatzbereite Beispiele für eingebettete Spracherkennungen auf GitHub. Hinweise zu kompletten Projekten finden Sie in der Dokumentation zu den einzelnen Beispielen:
Sie finden einsatzbereite Beispiele für eingebettete Spracherkennungen auf GitHub. Hinweise zu kompletten Projekten finden Sie in der Dokumentation zu den einzelnen Beispielen:
Hybridsprache
Hybridsprache mit dem Objekt HybridSpeechConfig
verwendet standardmäßig den Cloud Speech-Dienst und eingebettete Sprache als Fallback für den Fall, dass die Cloud-Konnektivität eingeschränkt oder langsam ist.
Bei der hybriden Sprachkonfiguration für Spracherkennung (Erkennungsmodelle) wird eingebettete Sprache verwendet, wenn die Verbindung zum Cloud-Dienst nach wiederholten Versuchen fehlschlägt. Die Erkennung kann den Clouddienst erneut verwenden, wenn die Verbindung später fortgesetzt wird.
Bei der hybriden Sprachkonfiguration für Sprachsynthese (Stimmen) werden die eingebettete und die Cloud-Synthese parallel ausgeführt und das Endergebnis wird basierend auf der Antwortgeschwindigkeit ausgewählt. Das beste Ergebnis wird bei jeder neuen Syntheseanforderung erneut ausgewertet.
Cloud-Sprache
Für die Cloud-Sprache verwenden Sie das Objekt SpeechConfig
, wie im Schnellstart für Spracherkennung und im Schnellstart für Sprachsynthese dargestellt. Um die Schnellstarts für eingebettete Sprache auszuführen, können Sie SpeechConfig
durch EmbeddedSpeechConfig
oder HybridSpeechConfig
ersetzen. Die meisten anderen Spracherkennungs- und Synthese-Codes sind identisch, unabhängig davon, ob cloudbasierte, eingebettete oder hybride Konfigurationen verwendet werden.
Funktionen für eingebettete Stimmen
Bei eingebetteten Stimmen ist es wichtig, zu beachten, dass bestimmte SSML-Tags aufgrund von Unterschieden in der Modellstruktur derzeit vielleicht nicht unterstützt werden. Ausführliche Informationen zu den nicht unterstützten SSML-Tags finden Sie in der folgenden Tabelle.
Level 1 | Level 2 | Unterwerte | Unterstützung in eingebettetem NTTS |
---|---|---|---|
audio | src | Nein | |
Lesezeichen (bookmark) | Ja | ||
break | strength | Ja | |
time | Ja | ||
Stille | Typ | Vorangestellt, Nachgestellt, Komma-genau usw. | Nein |
value | Nein | ||
emphasis | Level | Nein | |
lang | Nein | ||
lexicon | uri | Ja | |
mathematisch | Nein | ||
msttsaudioduration | value | Nein | |
msttsbackgroundaudio | src | Nein | |
Volume | Nein | ||
fadein | Nein | ||
fadeout | Nein | ||
msttsexpress-as | style | Nein | |
styledegree | Nein | ||
role | Nein | ||
msttssilence | Nein | ||
msttsviseme | Typ | redlips_front, FacialExpression | Nein |
p | Ja | ||
phoneme | Alphabet | ipa, sapi, ups usw. | Ja |
ph | Ja | ||
Prosodie | contour | Unterstützung auf Satzebene, en-US und zh-CN nur Wortebene | Ja |
pitch | Ja | ||
range | Ja | ||
rate | Ja | ||
Volume | Ja | ||
s | Ja | ||
Sagen als | interpret-as | Zeichen, Buchstabieren, number_digit, Datum usw. | Ja |
format | Ja | ||
detail | Ja | ||
sub | alias | Ja | |
speak | Ja | ||
voice | No |