Spracherkennung

Die Spracherkennung ist eine KI-gestützte Sprach-zu-Text-Technologie auf dem Gerät, die gesprochene Audiodaten in Echtzeit oder aus zuvor aufgezeichneten Dateien in Text transkribiert. Wenn sie vollständig auf dem Gerät ausgeführt wird, bietet es eine Transkription mit geringer Latenz, ohne dass eine Netzwerkverbindung erforderlich ist oder Audiodaten an die Cloud gesendet werden. Wie bei allen KI-Modellen ist die Transkription möglicherweise nicht immer genau und sollte für kritische Anwendungsfälle überprüft werden.

Das Hinzufügen von Spracherkennungsfunktionen zu Ihrer App ermöglicht Szenarien wie die folgenden:

  • Liveuntertitel und Untertitel bei Besprechungen oder Medienwiedergabe
  • Sprachgesteuerte Notizenaufnahme und Diktierfunktion
  • Barrierefreiheitsfeatures für Benutzer, die auf Spracheingabe angewiesen sind
  • Transkription aufgezeichneter Audiodateien wie Interviews oder Vorträge
  • Sprachbefehle und freihändige Interaktion in Desktopanwendungen

Die API unterstützt zwei Betriebsmodi:

  • Batcherkennung: Transkription einer vollständigen Audiodatei in einem Durchgang, ideal für vorab aufgezeichnete Inhalte.
  • Streamingerkennung: Kontinuierliche Echtzeittranskription von einem Mikrofon oder Audiodatenstrom, die Ergebnisse liefert, wenn Ausdrücke erkannt werden.

Sie können SpeechRecognitionModel verwenden, um gesprochene Sprache aus Audiodateien oder Echtzeit-Audiostreams auf dem Gerät zu transkribieren.

Api-Details finden Sie unter API-Referenz für KI-Sprachfunktionen.

Details zur Inhaltsmoderation finden Sie unter Inhaltssicherheit mit generativen AI-APIs.

Important

Paketmanifestanforderungen: Um Windows AI-Imageerstellungs-APIs zu verwenden, muss Ihre App als MSIX-Paket mit der systemAIModels in Ihrer Package.appxmanifestApp deklarierten Funktion verpackt werden. Stellen Sie außerdem sicher, dass das Attribut Ihres Manifests MaxVersionTested auf eine aktuelle Windows-Version festgelegt ist (z. B. 10.0.26226.0 oder höher), um die Windows AI-Features richtig zu unterstützen. Die Verwendung älterer Werte kann beim Laden des Modells zu Fehlern "Nicht durch App deklariert" führen.

<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>

Voraussetzungen

  • Windows-Version: Windows 11, Version 24H2 (Build 26100) oder höher
  • WinAppSDK-Version: Version 1.7.1 oder höher
  • Hardware: Copilot+ PC mit einer NPU, oder jeder Windows-PC, der die empfohlenen CPU-Spezifikationen erfüllt

Unterstützte Hardware

Die Spracherkennung wird auf der folgenden Hardware ausgeführt:

Gerätetechnik Status Details
NPU (Copilot+ PC) ✅ Verfügbar Beste Leistung. Das Modell ist vorinstalliert. Weitere Informationen finden Sie im Entwicklerhandbuch Copilot+ PCs.
CPU ✅ Verfügbar (optional, entfernbar) Das Modell ist nicht vorinstalliert – siehe Modellverfügbarkeit und Download. Am besten auf Geräten, die die empfohlenen CPU-Spezifikationen erfüllen.
Grafikprozessor (GPU) ❌ Nicht unterstützt Die Spracherkennung ist für GPU nicht verfügbar.

Note

Die Hardwareauswahl erfolgt automatisch. Auf einem Copilot+ PC mit einer NPU wird die Spracherkennung immer auf der NPU ausgeführt. Auf Nicht-Copilot+-Geräten wird sie automatisch auf der CPU ausgeführt – es gibt keine Entwickler- oder Endbenutzer-Opt-In, um CPU auf einem Copilot+ Gerät auszuwählen. Dies entspricht dem Muster, das von anderen Windows AI-APIs verwendet wird; siehe Supported Hardware für die apiübergreifende Ansicht.

Die Spracherkennung läuft auf jeder CPU, auf der auch die übrigen Windows-KI-APIs laufen, aber Qualität und Latenz der Echtzeittranskription skalieren mit der Host-CPU.

Für eine gute CPU-Leistung sollten Sie Geräte wählen, die alle der folgenden empfohlenen Spezifikationen erfüllen:

  • 4 oder mehr physische Kerne
  • 3 GHz oder höherer Basistakt
  • 32 MB oder mehr L3-Cache

Dies sind Empfehlungen, keine harten Mindestwerte – die API versucht weiterhin, auf Geräten mit niedrigerer Spezifikation zu transkribieren. Apps, die auf einen breiten CPU-Bereich abzielen, können dieselbe Laufzeit-CPU-Prüfung verwenden, die für VSR angezeigt wird – siehe empfohlene VSR-CPU-Spezifikationen für das C#-Beispiel mit System.Management (WMI). Verwenden Sie das Ergebnis als Grundlage für UX-Entscheidungen, beispielsweise um auf grenzwertiger Hardware standardmäßig die Batch-Erkennung zu verwenden oder den Einstiegspunkt für Live-Streaming auszublenden.

Modellverfügbarkeit und Download

Auf Copilot+ PCs ist das Spracherkennungsmodell auf der NPU preinstalliert. Auf nur CPU-Geräten ist das Modell nicht vorinstalliert – es wird bei Bedarf heruntergeladen, wenn Ihre App "EnsureReadyAsync" zum ersten Mal aufruft. Der Download wird im Hintergrund über Windows Update ausgeführt. Endbenutzer können das Modell später auch entfernen, um Speicherplatz freizugeben.

Dieses Verhalten entspricht dem Modelllebenszyklus, der von anderen optionalen Windows KI-Modellen verwendet wird. Ihre App muss den Fall "noch nicht installiert" explizit behandeln, anstatt davon auszugehen, dass das Modell vorhanden ist.

Da das Spracherkennungsmodell auf Geräten, die nur die CPU verwenden, bei Bedarf heruntergeladen wird, zeigen Sie einen Bestätigungsdialog an, bevor Sie EnsureReadyAsync aufrufen, damit der Benutzer dem Download im Hintergrund zustimmen kann. Ein typisches Muster:

  1. Rufen Sie GetReadyState auf und verzweigen Sie anhand des zurückgegebenen AIFeatureReadyState:

    • Ready — das Modell wird installiert; Fortfahren.
    • NotReady oder EnsureNeeded – zeigen Sie Ihr Zustimmungsdialogfeld an (siehe unten), und rufen Sie EnsureReadyAsync dann nur an, wenn der Benutzer zustimmt.
    • NotSupportedOnCurrentSystem – das Gerät erfüllt die Anforderungen in der unterstützten Hardware nicht. Bieten Sie eine Fallbackerfahrung (z. B. Speech Recognition über Windows SDK oder einen cloudbasierten Dienst) und stellen Sie gegebenenfalls die Hardwareanforderungen bereit, damit der Benutzer eine fundierte Upgradeentscheidung treffen kann.
  2. Erläutern Sie im Zustimmungsdialogfeld Folgendes:

    • Ein optionales Spracherkennungsmodell wird heruntergeladen.
    • Der Download erfolgt im Hintergrund über Windows Update.
    • Der Benutzer kann den Downloadfortschritt bei Settings>Windows Update überwachen.
    • Der Benutzer kann das Modell später unter "Settings>System>AI Components " entfernen, wenn es nicht mehr gewünscht wird.

    Tipp

    Verweisen Sie in benutzerorientierten Zeichenfolgen (Dialogtext, Statusmeldungen) auf das Modell als "Spracherkennungsmodell" oder "optionales KI-Modell" anstelle des zugrunde liegenden Modellnamens. Die meisten Endbenutzer sind nicht mit Marken vertraut, und allgemeine Begriffe kommunizieren eindeutiger.

  3. Während EnsureReadyAsync ausgeführt wird, zeigen Sie in Ihrer App eine Fortschrittsanzeige an. Siehe Get started with Windows AI APIs für das Lade-UI-Muster.

Nach der Installation des Modells

Das Modell bleibt auf dem Gerät, bis der Benutzer es entfernt. Benutzer verwalten installierte Modelle – einschließlich des Spracherkennungsmodells – unter "Settings>System>AI Components". Wenn der Benutzer das Modell später entfernt, gibt der nächste Aufruf Ihrer App an GetReadyStateNotReady oder EnsureNeeded zurück, und der Ablauf für Zustimmung und Download sollte wiederholt werden.

Stapelerkennung aus einer Audiodatei

Verwenden Sie die Batcherkennung, um eine vollständige Audiodatei zu transkribieren. Dieser Ansatz eignet sich ideal für vorab aufgezeichnete Audioinhalte.

  1. Rufen Sie GetReadyState auf, und warten Sie, bis EnsureReadyAsync erfolgreich abgeschlossen wurde, um zu bestätigen, dass das SpeechRecognitionModel bereit ist.
  2. Nachdem das Modell fertig ist, rufen Sie TryCreateAsync auf, um ein SpeechRecognitionModel-Objekt zu instanziieren.
  3. Erstellen Sie eine BatchRecognition-Instanz mit dem SpeechRecognitionModel.
  4. Rufen Sie "RecognizeFromFile " mit dem Pfad zur Audiodatei auf, die transkribiert werden soll.
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Speech;

if (SpeechRecognitionModel.GetReadyState() != AIFeatureReadyState.Ready)
{
    await SpeechRecognitionModel.EnsureReadyAsync();
}

var speechModelResult = await SpeechRecognitionModel.TryCreateAsync();
if (speechModelResult.SpeechModel == null)
{
    throw new InvalidOperationException(
        $"Failed to create SpeechRecognitionModel: {speechModelResult.ExtendedError}");
}

var speechModel = speechModelResult.SpeechModel;

var batchRecognition = new BatchRecognition(speechModel);
string transcription = await batchRecognition.RecognizeFromFile("path/to/audio.wav");

Console.WriteLine($"Transcription: {transcription}");

Streaming-Erkennung aus einer Echtzeit-Audioquelle

Verwenden Sie die Streamingerkennung, um Audio in Echtzeit von einem Mikrofon oder einem anderen Audioeingabegerät zu transkribieren. Dieser Ansatz liefert endgültige Ergebnisse, wenn vollständige Ausdrücke erkannt werden.

  1. Rufen Sie GetReadyState auf, und warten Sie, bis EnsureReadyAsync erfolgreich abgeschlossen wurde, um zu bestätigen, dass das SpeechRecognitionModel bereit ist.
  2. Nachdem das Modell fertig ist, rufen Sie TryCreateAsync auf, um ein SpeechRecognitionModel-Objekt zu instanziieren.
  3. Erstellen Sie eine AudioConfiguration mit FromAudioDevice mit dem Namen des Mikrofongeräts.
  4. Erstellen Sie eine StreamingRecognition-Instanz mit dem AudioConfiguration- und SpeechRecognitionModel.Create a StreamingRecognition instance with the AudioConfiguration and SpeechRecognitionModel.
  5. Abonnieren Sie das erkannte Ereignis, um Transkriptionsergebnisse zu erhalten.
  6. Rufen Sie "StartContinuousRecognitionAsync " auf, um mit der Transkription zu beginnen.
  7. Rufen Sie StopContinuousRecognition auf, wenn Sie fertig sind.
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Speech;

if (SpeechRecognitionModel.GetReadyState() != AIFeatureReadyState.Ready)
{
    await SpeechRecognitionModel.EnsureReadyAsync();
}

var speechModelResult = await SpeechRecognitionModel.TryCreateAsync();
if (speechModelResult.SpeechModel == null)
{
    throw new InvalidOperationException(
        $"Failed to create SpeechRecognitionModel: {speechModelResult.ExtendedError}");
}

var speechModel = speechModelResult.SpeechModel;

var audioConfig = AudioConfiguration.FromAudioDevice(microphoneDeviceName);
var streamingRecognition = new StreamingRecognition(audioConfig, speechModel);

// Subscribe to receive transcription results as phrases are recognized
streamingRecognition.Recognized += (sender, args) =>
{
    Console.WriteLine($"Recognized: {args.Text}");
};

// Start real-time recognition
await streamingRecognition.StartContinuousRecognitionAsync();

// ... recognition is active, audio is being transcribed in real-time ...

// Stop recognition when done
streamingRecognition.StopContinuousRecognition();

Siehe auch


HINWEISE UND INFORMATIONEN ZU DRITTANBIETERMODELLEN

Diese API verwendet Komponenten aus dem OpenAI Whisper-Modell , das unter der folgenden Lizenz bereitgestellt wird:

MIT-Lizenz

Copyright (c) 2022 OpenAI

Hiermit wird unentgeltlich, jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme, dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:

Der vorstehende Copyrightvermerk und seine Berechtigungsvermerke müssen Bestandteil aller Kopien oder wesentlichen Teile der Software sein.

DIE SOFTWARE WIRD „WIE BESEHEN“ OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GEWÄHRLEISTUNG BEREITGESTELLT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF, DIE GEWÄHRLEISTUNGEN DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER FÜR IRGENDWELCHE ANSPRÜCHE, SCHÄDEN ODER SONSTIGE HAFTUNG HAFTBAR, GLEICH OB IM RAHMEN EINER VERTRAGSKLAGE, EINER UNERLAUBTEN HANDLUNG ODER ANDERWEITIG, DIE AUS DER SOFTWARE ODER DER VERWENDUNG ODER SONSTIGEN UMGANGS MIT DER SOFTWARE ENTSTEHEN, SICH AUS IHR ERGEBEN ODER MIT IHR IN VERBINDUNG STEHEN.