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 Zugang ü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 und mit dem Speech SDK für Python (Version 1.51.0 und höher). Die allgemeinen Sprach-SDK-Installationsanforderungen für programmiersprache und zielplattformspezifische Details finden Sie in den allgemeinen Installationsanforderungen des Speech SDK.

Eingebettete Spracherkennung mit dem Speech SDK für Python wird unter Windows (x64, Arm64), Linux (x64, Arm64) und macOS (x64, Arm64) unterstützt. Python unterstützt keine eingebettete Sprache unter Android.

Eingebettete Spracherkennung mit dem Speech SDK für Go (Version 1.51.0 und höher) wird unter Linux (x64, Arm64, Arm32) unterstützt. Go unterstützt eingebettete Spracherkennung unter Android nicht.

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

  • Nur die C#-, C++-, Java-, Python- und Go-SDKs unterstützen eingebettete Spracherkennung. Die anderen Sprach-SDKs, Speech CLI und REST-APIs unterstützen keine eingebettete Sprache.
  • Das Speech SDK für Python und das Speech SDK für Go unterstützen keine Hybridsprache (HybridSpeechConfig). Verwenden Sie das C#-, C++- oder Java SDK für Hybridszenarien.
  • 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
    

Installieren Sie für in Python eingebettete Anwendungen die eingebettete Variante des Speech SDK für Python, die die On-Device-Inferenzlaufzeit umfasst:

pip install azure-cognitiveservices-speech-embedded

Wichtig

Das eingebettete Paket (azure-cognitiveservices-speech-embedded) ist eine Obermenge des reinen Cloudpakets (azure-cognitiveservices-speech). Er macht denselben azure.cognitiveservices.speech Importnamespace verfügbar und unterstützt zusätzlich zu eingebetteten Szenarien alle Cloudszenarien. Installieren Sie nur eines der beiden Pakete.

Das Speech SDK für Go ist eine cgo-Bindung, sodass für eingebettete Sprachfunktionen die nativen Speech SDK-Bibliotheken beim Erstellen und zur Laufzeit erforderlich sind. Laden Sie die eingebettete Variante des systemeigenen Speech SDK-Pakets für Linux herunter, das die Laufzeiterweiterungen auf Dem Gerät enthält:

  1. Wählen Sie ein Verzeichnis für die Speech SDK-Dateien aus, und legen Sie die SPEECHSDK_ROOT Umgebungsvariable so fest, dass sie darauf verweist:

    export SPEECHSDK_ROOT="$HOME/speechsdk-embedded"
    mkdir -p "$SPEECHSDK_ROOT"
    
  2. Laden Sie die eingebetteten Speech SDK-Binärdateien herunter, und extrahieren Sie sie:

    wget -O SpeechSDK-Embedded-Linux.tar.gz https://aka.ms/csspeech/linuxembeddedbinary
    tar --strip 1 -xzf SpeechSDK-Embedded-Linux.tar.gz -C "$SPEECHSDK_ROOT"
    

    Das eingebettete Paket ist eine erweiterte Version des Standardpakets, das nur für die Cloud verfügbar ist. Sie enthält die Kernbibliothek (Microsoft.CognitiveServices.Speech.core), die eingebetteten Erkennungs- und Syntheselaufzeiterweiterungen und deren ONNX-Laufzeitabhängigkeit. Installieren Sie nur das eingebettete Paket, nicht beide.

  3. Richten Sie cgo auf die nativen Header und Bibliotheken und fügen Sie den Bibliotheksordner zum Suchpfad des Loaders hinzu. Ersetzen Sie <architecture> durch die Prozessorarchitektur Ihrer CPU: x64, arm64 oder arm32.

    export CGO_CFLAGS="-I$SPEECHSDK_ROOT/include/c_api"
    export CGO_LDFLAGS="-L$SPEECHSDK_ROOT/lib/<architecture> -lMicrosoft.CognitiveServices.Speech.core"
    export LD_LIBRARY_PATH="$SPEECHSDK_ROOT/lib/<architecture>:$LD_LIBRARY_PATH"
    
  4. Fügen Sie ihrem Projekt das Speech SDK für Go hinzu:

    go get github.com/Microsoft/cognitive-services-speech-sdk-go
    

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 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 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);
import os
import azure.cognitiveservices.speech as speechsdk

# Provide the location of the models and voices.
paths = [
    "C:\\dev\\embedded-speech\\stt-models",
    "C:\\dev\\embedded-speech\\tts-voices",
]
embedded_speech_config = speechsdk.EmbeddedSpeechConfig.from_paths(paths)

# For speech to text
embedded_speech_config.set_speech_recognition_model(
    "Microsoft Speech Recognizer en-US FP Model V8",
    os.environ.get("EMBEDDED_SPEECH_MODEL_LICENSE"))

# For text to speech
embedded_speech_config.set_speech_synthesis_voice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    os.environ.get("EMBEDDED_SPEECH_MODEL_LICENSE"))
embedded_speech_config.set_speech_synthesis_output_format(
    speechsdk.SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm)

Tipp

Wenn es nur ein Modell oder einen VoIP-Pfad gibt, können Sie auch verwenden speechsdk.EmbeddedSpeechConfig.from_path(path).

import (
    "os"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

// Provide the location of the models and voices.
paths := []string{
    "/dev/embedded-speech/stt-models",
    "/dev/embedded-speech/tts-voices",
}
embeddedSpeechConfig, err := speech.NewEmbeddedSpeechConfigFromPaths(paths)
if err != nil {
    // Handle the error.
}
defer embeddedSpeechConfig.Close()

// For speech to text
embeddedSpeechConfig.SetSpeechRecognitionModel(
    "Microsoft Speech Recognizer en-US FP Model V8",
    os.Getenv("EMBEDDED_SPEECH_MODEL_LICENSE"))

// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    os.Getenv("EMBEDDED_SPEECH_MODEL_LICENSE"))

Tipp

Wenn es nur ein Modell oder einen VoIP-Pfad gibt, können Sie auch verwenden speech.NewEmbeddedSpeechConfigFromPath(path). Die eingebettete Konfiguration verpackt eine reguläre SpeechConfig, also übergeben Sie embeddedSpeechConfig.GetSpeechConfig() an die vorhandenen Factory-Funktionen für Erkennungsmodule und Synthesizer, wie etwa NewSpeechRecognizerFromConfig.

Eingebettete Sprachcodebeispiele

Sie können vorbereitete eingebettete Sprachproben auf GitHub finden. Hinweise zu kompletten Projekten finden Sie in der Dokumentation zu den einzelnen Beispielen:

Sie können vorbereitete eingebettete Sprachproben auf GitHub finden. Hinweise zu kompletten Projekten finden Sie in der Dokumentation zu den einzelnen Beispielen:

Sie können vorbereitete eingebettete Sprachproben auf GitHub finden. Hinweise zu kompletten Projekten finden Sie in der Dokumentation zu den einzelnen Beispielen:

Sie finden einsatzbereite Sprachbeispiele für eingebettete Systeme auf GitHub. Hinweise zu von Grund auf neu erstellten Projekten finden Sie in der spezifischen Dokumentation zu den Beispielen:

Bei GitHub finden Sie einsatzbereite eingebettete Sprachbeispiele für Spracherkennung, Synthese und Übersetzung. Informationen zu Voraussetzungen, zur Einrichtung nativer Bibliotheken, zur Modell- und Sprachinstallation sowie zu Build-Flags finden Sie im Leitfaden für eingebettete Beispiele.

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.

Note

Das Speech SDK für Python und das Speech SDK für Go unterstützen keine Hybridspracherkennung. Verwenden Sie das C#-, C++- oder Java SDK für Hybridszenarien.

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 Vorangestellt, Nachgestellt, 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 usw. Ja
Ph Ja
Prosodie Kontur Unterstützung auf Satzebene, nur auf Wortebene für en-US und zh-CN Ja
pitch Ja
Bereich Ja
rate Ja
Volumen Ja
s Ja
Sagen als interpret-as 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.