Was ist eingebettete Sprache?

Eingebettete Sprachverarbeitung ist für Sprache-zu-Text und Text-zu-Sprache-Szenarien auf Geräten konzipiert, in denen die Cloudkonnektivität zeitweise oder nicht verfügbar ist. Sie können z. B. eingebettete Spracherkennungen in Industriegeräten, eine sprachfähige Klimaanlage oder ein Auto verwenden, das außerhalb der Reichweite reisen kann. Sie können auch Hybrid-Cloud- und Offlinelösungen entwickeln. Für Szenarien, in denen Sich Ihre Geräte in einer sicheren Umgebung wie einer Bank- oder Regierungsentität befinden müssen, sollten Sie zuerst getrennte Container in Betracht ziehen.

Wichtig

Microsoft beschränkt den Zugriff auf eingebettete Sprache. Sie können den Zugriff über die Azure Speech in Foundry Tools embedded Speech Limited Access Review beantragen. Weitere Informationen finden Sie unter Eingeschränkter Zugriff für eingebettete Spracherkennung.

Plattformanforderungen

Eingebettete Spracherkennung ist im Speech SDK (Version 1.24.1 und höher) für C#, C++ und Java enthalten. Die allgemeinen Sprach-SDK-Installationsanforderungen für programmiersprache und zielplattformspezifische Details finden Sie in den allgemeinen Installationsanforderungen des Speech SDK.

Im Folgenden werden allgemeine Schätzungen des Arbeitsspeicherverbrauchs mit eingebetteter Sprache beschrieben. Die endgültigen Zahlen hängen von der Featurekonfiguration ab.

  • Spracherkennung oder Übersetzung: Gesamtgröße der Dateien eines Modells + 200 MB.
  • Sprachsynthese: 100-200 MB je nach Spracheinstellung.

Auswählen Ihrer Zielumgebung

Erfordert Android 8.0 (API-Ebene 26) oder höher auf Arm64 (arm64-v8a) oder Arm32 () Hardwarearmeabi-v7a.

Einschränkungen

  • Eingebettete Spracherkennung ist nur mit C#-, C++- und Java-SDKs verfügbar. Die anderen Sprach-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 neurale Stimmen unterstützen 16 oder 24 kHz RIFF/RAW.

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 Java eingebettete Anwendungen client-sdk-embedded (.jar) als Abhängigkeit hinzu. Dieses Paket unterstützt Cloud-, eingebettete und hybride Spracherkennung.

Wichtig

Fügen Sie das Client-SDK nicht im selben Projekt hinzu, da es nur Cloud-Sprachdienste unterstützt.

Führen Sie die folgenden Schritte aus, um das Speech SDK für Java mit Apache Maven zu installieren:

  1. Installieren Sie Apache Maven.
  2. Öffnen Sie eine Eingabeaufforderung, an der das neue Projekt erstellt werden soll, und erstellen Sie eine neue pom.xml Datei.
  3. 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.43.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. 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 Spracherkennung müssen Sie die Spracherkennungsmodelle für Sprache in Text und Stimmen für Text in Sprache herunterladen. Anweisungen werden nach erfolgreichem Abschluss des Eingeschränkten Zugriffsüberprüfungsprozesses bereitgestellt.

Die folgende Spracherkennung für Textmodelle ist verfügbar: 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-HKund zh-TW.

Alle Text-zu-Sprache-Orte hier (außer fa-IR, Persisch (Iran)) sind sofort verfügbar mit entweder einer ausgewählten weiblichen Stimme und/oder einer ausgewählten männlichen Stimme. Wir freuen uns über Ihre Eingaben, um die Nachfrage nach mehr Sprachen und Stimmen zu messen.

Eingebettete Sprachkonfiguration

Für in der Cloud verbundene Anwendungen, wie in den meisten Sprach-SDK-Beispielen gezeigt, verwenden Sie das SpeechConfig Objekt mit einem API-Schlüssel und Endpunkt. Für eingebettete Spracherkennung verwenden Sie keine Foundry-Ressource für Sprache. Anstelle einer Cloudressource verwenden Sie die Modelle und Stimmen , die Sie auf Ihr lokales Gerät herunterladen.

Verwenden Sie das EmbeddedSpeechConfig Objekt, um die Position der Modelle oder Stimmen festzulegen. Wenn Ihre Anwendung sowohl für Sprache-zu-Text als auch für Text-zu-Sprache 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 GetEnvironmentVariable-Funktion wird in der Sprache-zu-Text-Schnellstartanleitung und der Text-zu-Sprache-Schnellstartanleitung 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 können vorbereitete eingebettete Sprachproben auf GitHub finden. Hinweise zu Projekten von Grund auf neu finden Sie in beispielspezifischen Dokumentationen:

Sie können vorbereitete eingebettete Sprachproben auf GitHub finden. Hinweise zu Projekten von Grund auf neu finden Sie in beispielspezifischen Dokumentationen:

Sie können vorbereitete eingebettete Sprachproben auf GitHub finden. Hinweise zu Projekten von Grund auf neu finden Sie in beispielspezifischen Dokumentationen:

Hybridsprache

Hybridsprache mit dem HybridSpeechConfig Objekt verwendet standardmäßig den Cloud-Sprachdienst und eingebettete Spracherkennung als Fallback, falls die Cloudkonnektivität eingeschränkt oder langsam ist.

Bei hybrider Sprachkonfiguration für Sprache in Text (Erkennungsmodelle) wird eingebettete Sprache verwendet, wenn die Verbindung mit dem Clouddienst nach wiederholten Versuchen fehlschlägt. Die Erkennung kann den Clouddienst möglicherweise erneut verwenden, wenn die Verbindung später fortgesetzt wird.

Bei hybrider Sprachkonfiguration für Text zu Sprache (Stimmen) werden eingebettete und Cloudsynthese parallel ausgeführt, und das Endergebnis wird basierend auf der Antwortgeschwindigkeit ausgewählt. Das beste Ergebnis wird bei jeder neuen Syntheseanforderung erneut ausgewertet.

Cloud-Spracherkennung

Bei Cloud-Spracherkennung verwenden Sie das SpeechConfig-Objekt, wie im Sprach-zu-Text-Schnellstart und Text-zu-Sprach-Schnellstart gezeigt. Um die Schnellstarts für eingebettete Sprache auszuführen, können Sie sie durch SpeechConfig oder EmbeddedSpeechConfigersetzenHybridSpeechConfig. Die meisten anderen Spracherkennungs- und Synthesecode sind identisch, unabhängig davon, ob Sie cloudbasierte, eingebettete oder Hybridkonfiguration verwenden.

Funktionen für eingebettete Stimmen

Bei eingebetteten Stimmen ist es wichtig zu beachten, dass bestimmte SSML-Tags (Speech Synthesis Markup Language) aufgrund von Unterschieden in der Modellstruktur derzeit nicht unterstützt werden. Ausführliche Informationen zu den nicht unterstützten SSML-Tags finden Sie in der folgenden Tabelle.

Ebene 1 Ebene 2 Unterwerte Unterstützung in integrierten NTTS
Audio Src Nein
Lesezeichen Ja
Unterbrechung Stärke Ja
Zeit Ja
Stille Typ Führend, Nachlaufend, Komma-genau usw. Nein
Wert Nein
Schwerpunkt Ebene Nein
lang Nein
Lexikon Uri Ja
Mathe Nein
msttsaudioduration Wert Nein
msttsbackgroundaudio Src Nein
Volumen Nein
einblenden Nein
Ausblendung Nein
msttsexpress-as Stil Ja1
styledegree Nein
Rolle Nein
msttssilence Nein
msttsviseme Typ redlips_front, Gesichtsausdruck Nein
P Ja
Phonem Alphabet ipa, sapi, ups, etc. Ja
Ph Ja
Prosodie Kontur Unterstützung auf Satzebene, nur auf Wortebene für en-US und zh-CN Ja
Präsentation Ja
Bereich Ja
Geschwindigkeit Ja
Volumen Ja
s Ja
spreche-als interpretieren als Zeichen, Rechtschreibung, Zahl_Ziffer, Datum usw. Ja
Format Ja
Detail Ja
Sub Alias Ja
Sprechen Ja
Stimme Nein

1 Der msttsexpress-as Stil wird nur für die en-US-JennyNeural Stimme unterstützt.