Spraakherkenning

Spraakherkenning is een op AI gebaseerde spraak-naar-teksttechnologie die gesproken audio in realtime of vanuit vooraf opgenomen bestanden transcribeert in tekst. Door volledig op het apparaat uit te voeren, biedt het transcriptie met lage latentie zonder een netwerkverbinding of het verzenden van audiogegevens naar de cloud. Net als bij alle AI-modellen is transcriptieuitvoer mogelijk niet altijd nauwkeurig en moet worden gevalideerd voor kritieke use cases.

Door spraakherkenningsmogelijkheden toe te voegen aan uw app, zijn scenario's mogelijk, waaronder:

  • Realtime-ondertiteling en ondertitels voor vergaderingen of het afspelen van media
  • Spraakgestuurde notities maken en dicteren
  • Toegankelijkheidsfuncties voor gebruikers die afhankelijk zijn van spraakinvoer
  • Transcriptie van opgenomen audiobestanden zoals interviews of lezingen
  • Spraakopdrachten en hands-free interactie in bureaubladtoepassingen

De API ondersteunt twee bewerkingsmodi:

  • Batchherkenning: Een volledig audiobestand in één pas transcriberen, ideaal voor vooraf opgenomen inhoud.
  • Streamingherkenning: Doorlopende realtime-transcriptie via een microfoon of audiostream, waarbij resultaten worden weergegeven zodra woordgroepen worden herkend.

U kunt SpeechRecognitionModel gebruiken om spraak te transcriberen vanuit audiobestanden of realtime audiostreams op het apparaat.

Zie voor details over de API het API-naslagwerk voor AI Speech-functies.

Zie Inhoudsveiligheid met generatieve AI-API's voor meer informatie over inhoudsbeheer.

Important

Vereisten voor pakketmanifest: Als u Windows AI imaging-API's wilt gebruiken, moet uw app worden verpakt als een MSIX-pakket met de systemAIModels mogelijkheid die is gedeclareerd in uw Package.appxmanifest. Zorg er bovendien voor dat het kenmerk van MaxVersionTested uw manifest is ingesteld op een recente Windows-versie (bijvoorbeeld 10.0.26226.0 of hoger) om de Windows AI-functies goed te ondersteunen. Het gebruik van oudere waarden kan fouten veroorzaken die niet door app zijn gedeclareerd bij het laden van het model.

<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>

Prerequisites

  • Windows-versie: Windows 11, versie 24H2 (build 26100) of hoger
  • WinAppSDK-versie: Versie 1.7.1 of hoger
  • Hardware: Copilot+ PC met een NPU, or elke Windows pc die voldoet aan de opgevraagde CPU-specificaties

Ondersteunde hardware

Spraakherkenning wordt uitgevoerd op de volgende hardware:

Hardware Status Details
NPU (Copilot+ PC) ✅ Beschikbaar Beste prestaties. Het model is vooraf geïnstalleerd. Zie Copilot+ PCs ontwikkelaarshandleiding.
CPU ✅ Beschikbaar (optioneel, verwisselbaar) Het model is niet vooraf geïnstalleerd. Zie de beschikbaarheid en download van het model. Het beste op apparaten die voldoen aan de aanbevolen CPU-specificaties.
Graphics Processing Unit (GPU) ❌ Niet ondersteund Spraakherkenning is niet beschikbaar op GPU.

Note

De selectie van hardware gebeurt automatisch. Op een Copilot+ PC met een NPU wordt spraakherkenning altijd uitgevoerd op de NPU. Op niet-Copilot+ apparaten wordt deze automatisch uitgevoerd op de CPU. Er is geen opt-in voor ontwikkelaars of eindgebruikers om CPU op een Copilot+ apparaat te selecteren. Dit komt overeen met het patroon dat wordt gebruikt door andere WINDOWS AI-API's. Zie Supported hardware voor de cross-API-weergave.

Spraakherkenning werkt op elke CPU waarop ook de overige Windows AI-API's werken, maar de kwaliteit van realtime transcriptie en de latentie zijn afhankelijk van de CPU van het hostsysteem.

Voor een goede CPU-ervaring richt u zich op apparaten die aan alle onderstaande aanbevolen specificaties voldoen:

  • 4 of meer fysieke kernen
  • 3 GHz of een hogere basisklok
  • 32 MB of meer L3-cache

Dit zijn aanbevelingen, geen harde minimumen. De API probeert nog steeds te transcriberen op apparaten met een lagere specificatie. Apps die gericht zijn op een breed CPU-bereik, kunnen dezelfde runtime-CPU-controle gebruiken die wordt weergegeven voor VSR. Zie VSR Aanbevolen CPU-specificaties voor het C#-voorbeeld met behulp van System.Management (WMI). Gebruik het resultaat om UX-keuzes te gateen, zoals het standaard instellen van batchherkenning op borderlinehardware of het verbergen van het invoerpunt voor livestreaming.

Beschikbaarheid van modellen en downloaden

Op Copilot+ PCs is het spraakherkenningsmodel voorgeïnstalleerd op de NPU. Op alleen CPU-apparaten is het model niet vooraf geïnstalleerd. Het wordt op aanvraag gedownload wanneer uw app EnsureReadyAsync voor het eerst aanroept. De download wordt op de achtergrond uitgevoerd via Windows Update. Eindgebruikers kunnen het model later ook verwijderen om schijfruimte vrij te maken.

Dit gedrag komt overeen met de levenscyclus van het model dat wordt gebruikt door andere optionele Windows AI-modellen. Uw app moet het geval 'nog niet geïnstalleerd' expliciet verwerken in plaats van ervan uit te gaan dat het model aanwezig is.

Omdat het spraakherkenningsmodel op aanvraag wordt gedownload op apparaten die alleen een CPU hebben, toon een bevestigingsdialoogvenster voordat EnsureReadyAsync wordt aangeroepen, zodat de gebruiker toestemming kan geven voor de download op de achtergrond. Een typisch patroon:

  1. Roep GetReadyState en vertakking aan op de geretourneerde AIFeatureReadyState:

    • Ready — het model is geïnstalleerd; ga verder.
    • NotReady of EnsureNeeded : geef uw toestemmingsdialoogvenster weer (zie hieronder) en roep EnsureReadyAsync alleen aan als de gebruiker akkoord gaat.
    • NotSupportedOnCurrentSystem — het apparaat voldoet niet aan de vereisten in ondersteunde hardware. Bied een terugvalervaring (bijvoorbeeld Speech Recognition via Windows SDK of een cloudservice) en, indien van toepassing, de hardwarevereisten aan, zodat de gebruiker een weloverwogen upgradebeslissing kan nemen.
  2. Leg het volgende uit in uw toestemmingsdialoogvenster:

    • Er wordt een optioneel spraakherkenningsmodel gedownload.
    • De download vindt plaats op de achtergrond via Windows Update.
    • De gebruiker kan de voortgang van het downloaden controleren op Settings>Windows Update.
    • De gebruiker kan het model later verwijderen bijSystem>AI Components> als ze het niet meer willen.

    Tip

    In gebruikersgerichte tekenreeksen (dialoogvenstertekst, statusberichten) verwijst u naar het model als het 'spraakherkenningsmodel' of 'optioneel AI-model' in plaats van de naam van het onderliggende model. De meeste eindgebruikers zijn niet bekend met merknamen en algemene termen communiceren duidelijker met het doel.

  3. Terwijl EnsureReadyAsync wordt uitgevoerd, toont u in uw app een voortgangsindicator. Zie Aan de slag met Windows AI-API's voor het laadschermpatroon.

Nadat het model is geïnstalleerd

Het model blijft op het apparaat staan totdat de gebruiker het verwijdert. Gebruikers beheren geïnstalleerde modellen, waaronder het spraakherkenningsmodel, in Instellingen>systeem>AI-onderdelen. Als de gebruiker het model later weer verwijdert, geeft de volgende aanroep van GetReadyState door uw app NotReady of EnsureNeeded terug en moet het toestemmings- en downloadproces worden herhaald.

Batchherkenning van een audiobestand

Gebruik batchherkenning om een volledig audiobestand te transcriberen. Deze methode is ideaal voor vooraf opgenomen audio-inhoud.

  1. Roep GetReadyState aan en wacht tot EnsureReadyAsync is voltooid om te bevestigen dat het SpeechRecognitionModel gereed is.
  2. Nadat het model gereed is, roept u TryCreateAsync aan om een SpeechRecognitionModel-object te instantiëren.
  3. Maak een BatchRecognition-exemplaar met het SpeechRecognitionModel.
  4. Roep RecognizeFromFile aan met het pad naar het audiobestand om te transcriberen.
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}");

Streamingherkenning van een realtime audiobron

Gebruik streamingherkenning om audio in realtime te transcriberen vanaf een microfoon of een ander audio-invoerapparaat. Deze benadering biedt uiteindelijke resultaten wanneer volledige woordgroepen worden herkend.

  1. Roep GetReadyState aan en wacht tot EnsureReadyAsync is voltooid om te bevestigen dat het SpeechRecognitionModel gereed is.
  2. Nadat het model gereed is, roept u TryCreateAsync aan om een SpeechRecognitionModel-object te instantiëren.
  3. Maak een AudioConfiguration met behulp van FromAudioDevice met de naam van de microfoon.
  4. Maak een StreamingRecognition-exemplaar met het AudioConfiguration- en SpeechRecognitionModel.
  5. Abonneer u op de herkende gebeurtenis om transcriptieresultaten te ontvangen.
  6. Roep StartContinuousRecognitionAsync aan om de transcriptie te starten.
  7. Roep StopContinuousRecognition aan wanneer u klaar bent.
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();

Zie ook


KENNISGEVINGEN EN INFORMATIE VAN HET MODEL VAN DERDEN

Deze API maakt gebruik van onderdelen van het OpenAI Whisper-model , dat wordt geleverd onder de volgende licentie:

MIT-licentie

Copyright (c) 2022 OpenAI

Hierbij wordt aan elke persoon die een kopie van deze software en de bijbehorende documentatie (de 'Software') heeft verkregen toestemming verleend om gratis, zonder beperkingen om te gaan met de Software, met inbegrip van, zonder beperking, het recht om de Software te gebruiken, te kopiëren, te wijzigen, samen te voegen, te publiceren, te verspreiden, in sublicentie te geven en/of kopieën van de Software te verkopen, en om personen aan wie de Software is verstrekt, toestemming te geven hetzelfde te doen, mits aan de volgende voorwaarden wordt voldaan:

De bovenstaande copyrightmelding en deze toestemmingskennisgeving moeten worden toegevoegd aan alle kopieën of substantiële delen van de Software.

DE SOFTWARE WORDT GELEVERD 'ALS ZODANIG', ZONDER ENIGE GARANTIE, UITDRUKKELIJK OF IMPLICIET, MET INBEGRIP VAN MAAR NIET BEPERKT TOT GARANTIES BETREFFENDE VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL EN HET NIET SCHENDEN VAN RECHTEN VAN DERDEN. In geen geval kunnen de auteurs of auteursrechthebbenden aansprakelijk worden gesteld voor enige vordering, schade of enige andere aansprakelijkheid, ongeacht of die voortvloeit uit een overeenkomst, onrechtmatige daad of anderszins, voortvloeiend uit, uit of in verband met de software of het gebruik van of ander gebruik van de software.