Konuşma tanıma

Konuşma Tanıma, konuşulan sesi gerçek zamanlı olarak veya önceden kaydedilmiş dosyalardan metne dönüştüren yapay zeka destekli bir cihazda konuşmayı metne dönüştürme teknolojisidir. Tamamen cihazda çalıştırılarak, ağ bağlantısı gerektirmeden veya buluta ses verileri göndermeden düşük gecikmeli transkripsiyon sağlar. Tüm yapay zeka modellerinde olduğu gibi transkripsiyon çıkışı her zaman doğru olmayabilir ve kritik kullanım örnekleri için doğrulanmalıdır.

Uygulamanıza konuşma tanıma özellikleri eklemek, aşağıdakiler de dahil olmak üzere senaryolara olanak tanır:

  • Toplantılar veya medya oynatma için gerçek zamanlı altyazı oluşturma ve altyazılar
  • Sesli not alma ve dikte etme
  • Konuşma girişlerine güvenen kullanıcılar için erişilebilirlik özellikleri
  • Röportajlar veya dersler gibi kayıtlı ses dosyalarının dökümü
  • Masaüstü uygulamalarında sesli komutlar ve tutmadan etkileşim

API iki işlem modunu destekler:

  • Toplu tanıma: Önceden kaydedilmiş içerikler için ideal olan, bir ses dosyasının tamamının dökümünü tek geçişte çıkarın.
  • Akışlı tanıma: Mikrofondan veya ses akışından sürekli, gerçek zamanlı metne dönüştürme yapar; ifadeler tanındıkça sonuçlar sunar.

Cihazdaki ses dosyalarından veya gerçek zamanlı ses akışlarından konuşmanın dökümünü almak için SpeechRecognitionModel'i kullanabilirsiniz.

API ayrıntıları için bkz. AI Konuşma özellikleri için API başvurusu.

İçerik denetimi ayrıntıları için bkz. Üretken yapay zeka API'leriyle içerik güvenliği.

Important

Paket Bildirimi Gereksinimleri: Windows AI görüntüleme API'lerini kullanmak için uygulamanızın içinde systemAIModelsbildirilen özelliğe sahip Package.appxmanifest bir MSIX paketi olarak paketlenmiş olması gerekir. Ayrıca, Windows yapay zeka özelliklerini düzgün bir şekilde desteklemek için bildiriminizin MaxVersionTested özniteliğinin en son Windows sürümüne (ör. 10.0.26226.0 veya üzeri) ayarlandığından emin olun. Eski değerlerin kullanılması, modeli yüklerken "Uygulama tarafından bildirilmedi" hatalarına neden olabilir.

<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 sürümü: Windows 11, sürüm 24H2 (derleme 26100) veya üzeri
  • WinAppSDK sürümü: Sürüm 1.7.1 veya üzeri
  • Donanım: NPU’ya sahip bir Copilot+ PC veyaönerilen CPU özelliklerini karşılayan herhangi bir Windows bilgisayar

Desteklenen donanım

Konuşma Tanıma aşağıdaki donanımda çalışır:

Donanım Statü Details
NPU (Copilot+ PC) ✅ Mevcut En iyi performans. Model önceden yüklenmiştir. Bkz. Copilot+ PCs geliştirici kılavuzu.
İşlemci (CPU) ✅ Kullanılabilir (isteğe bağlı, çıkarılabilir) Model önceden yüklenmemiş— bkz. Model kullanılabilirliği ve indirme. Önerilen CPU belirtimlerini karşılayan cihazlarda en iyi.
GPU (Grafik İşleme Birimi) ❌ Desteklenmiyor Konuşma Tanıma GPU'da kullanılamaz.

Note

Donanım seçimi otomatiktir. NPU içeren bir Copilot+ PC, Konuşma Tanıma her zaman NPU üzerinde çalışır. Copilot+ olmayan cihazlarda, CPU üzerinde otomatik olarak çalışır; Copilot+ cihazda CPU seçmeyi seçen bir geliştirici veya son kullanıcı yoktur. Bu, diğer Windows yapay zeka API'leri tarafından kullanılan desenle eşleşir; bkz. çapraz API görünümü için Supported hardware.

Konuşma Tanıma, Windows AI API’lerinin geri kalanını çalıştırabilen herhangi bir CPU’da çalışır; ancak gerçek zamanlı transkripsiyon kalitesi ve gecikme, ana sistemin CPU’suna bağlı olarak değişir.

İyi bir CPU deneyimi için, aşağıdaki önerilen özelliklerin tümünü karşılayan cihazları hedefleyin:

  • 4 veya daha fazla fiziksel çekirdek
  • 3 GHz veya daha yüksek taban saat
  • 32 MB veya daha fazla L3 önbelleği

Bunlar önerilerdir, sabit minimumlar değildir; API yine de düşük belirtimli cihazlarda dökümü yapmaya çalışır. Geniş bir CPU aralığını hedefleyen uygulamalar, VSR için gösterilen aynı çalışma zamanında CPU denetimini kullanabilir — VSR için Önerilen CPU Özellikleri bölümünde, System.Management (WMI) kullanan C# örneğine bakın. Sonucu, UX seçimlerini yönlendirmek için kullanın; örneğin, sınırda kalan donanımlarda toplu tanımayı varsayılan yapmak veya canlı akış özelliğine giriş noktasını gizlemek için.

Modelin kullanılabilirliği ve indirme

Copilot+ bilgisayarlarda konuşma tanıma modeli, NPU üzerinde önceden yüklüdür. Yalnızca CPU kullanan cihazlarda model önceden yüklenmez ; uygulamanız EnsureReadyAsync'i ilk kez aradığında isteğe bağlı olarak indirilir. İndirme, Windows Update aracılığıyla arka planda çalışır. Son kullanıcılar daha sonra disk alanını geri kazanmak için modeli de kaldırabilir.

Bu davranış, diğer isteğe bağlı Windows yapay zeka modelleri tarafından kullanılan model yaşam döngüsüyle eşleşir. Uygulamanızın modelin mevcut olduğunu varsaymak yerine "henüz yüklü değil" olayını açıkça işlemesi gerekir.

Konuşma tanıma modeli yalnızca CPU kullanan cihazlara isteğe bağlı olarak indirildiğinden, kullanıcının arka plan indirmesine onay verebilmesi için aramadan EnsureReadyAsyncönce bir onay iletişim kutusu gösterin. Tipik bir desen:

  1. GetReadyState öğesini çağırın ve döndürülen AIFeatureReadyState değerine göre dallanın:

    • Ready — model yüklü; devam edin.
    • NotReady veya EnsureNeeded — onay iletişim kutunuzu gösterin (aşağıya bakın), ardından yalnızca kullanıcı kabul ederse arayın EnsureReadyAsync .
    • NotSupportedOnCurrentSystem — cihaz Desteklenen donanım gereksinimlerini karşılamıyor. Geri dönüş deneyimi (örneğin, Speech Recognition via Windows SDK veya bulut tabanlı bir hizmet) sunun ve uygun olduğunda donanım gereksinimlerini ortaya çıkararak kullanıcının bilinçli bir yükseltme kararı alabilmesini sağlayın.
  2. Onay iletişim kutunuzda şunları açıklayın:

    • İsteğe bağlı bir konuşma tanıma modeli indirilir.
    • İndirme, Windows Update aracılığıyla arka planda gerçekleşir.
    • Kullanıcı indirme ilerleme durumunu Settings>Windows Update konumunda izleyebilir.
    • Kullanıcı daha sonra artık istemiyorsa Modeli Ayarlar>Sistem>Yapay Zeka Bileşenleri sayfasından kaldırabilir.

    Tip

    Kullanıcıya yönelik dizelerde (iletişim kutusu metni, durum iletileri), modeli temel alınan model adı yerine "konuşma tanıma modeli" veya "isteğe bağlı yapay zeka modeli" olarak adlandırın. Son kullanıcıların çoğu marka adları hakkında bilgi sahibi değildir ve genel terimler amacı daha net bir şekilde ifade edebilir.

  3. EnsureReadyAsync devam ederken uygulamanızda bir ilerleme göstergesi görüntüleyin. Yükleme kullanıcı arabirimi deseni için Windows AI API’lerine giriş bölümüne bakın.

Model yüklendikten sonra

Model, kullanıcı kaldırana kadar cihazda kalır. Kullanıcılar, yüklü modelleri (konuşma tanıma modeli dahil) Ayarlar>Sistem>AI Bileşenleri'nde yönetir. Kullanıcı daha sonra modeli kaldırırsa, uygulamanızın GetReadyState öğesine yapacağı bir sonraki çağrı NotReady veya EnsureNeeded döndürür ve onay + indirme akışı yeniden tekrarlanmalıdır.

Ses dosyasından toplu tanıma

Bir ses dosyasının tamamını metne dönüştürmek için toplu tanımayı kullanın. Bu yaklaşım, önceden kaydedilmiş ses içeriği için idealdir.

  1. GetReadyState'i çağırın ve SpeechRecognitionModel'in hazır olduğunu onaylamak için EnsureReadyAsync'in başarıyla tamamlanmasını bekleyin.
  2. Model hazır olduktan sonra Bir SpeechRecognitionModel nesnesinin örneğini oluşturmak için TryCreateAsync'i çağırın.
  3. SpeechRecognitionModel ile bir BatchRecognition örneği oluşturun.
  4. Dökümü yapılan ses dosyasının yolu ile RecognizeFromFile'ı çağırın.
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}");

Gerçek zamanlı bir ses kaynağından akış tabanlı tanıma

Mikrofondan veya başka bir ses giriş cihazından gerçek zamanlı olarak ses dökümünü almak için akış tanımayı kullanın. Bu yaklaşım, tümceciklerin tamamı tanındıkça nihai sonuçlar sağlar.

  1. GetReadyState'i çağırın ve SpeechRecognitionModel'in hazır olduğunu onaylamak için EnsureReadyAsync'in başarıyla tamamlanmasını bekleyin.
  2. Model hazır olduktan sonra Bir SpeechRecognitionModel nesnesinin örneğini oluşturmak için TryCreateAsync'i çağırın.
  3. Mikrofon cihazı adıyla FromAudioDevice kullanarak bir AudioConfiguration oluşturun.
  4. AudioConfiguration ve SpeechRecognitionModel ile streamingRecognition örneği oluşturun.
  5. Transkripsiyon sonuçlarını almak için Tanınan olaya abone olun.
  6. Transkripsiyona başlamak için StartContinuousRecognitionAsync'i çağır.
  7. İşiniz bittiğinde StopContinuousRecognition öğesini çağır.
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();

Ayrıca bkz.


ÜÇÜNCÜ TARAF MODEL BİlDİrİmLerİ VE BİlGİLerİ

Bu API, aşağıdaki lisans kapsamında sağlanan OpenAI Whisper modeli bileşenlerini kullanır:

MIT Lisansı

Telif Hakkı (c) 2022 OpenAI

İşbu belgeyle, bu yazılımın ve ilgili dokümantasyon dosyalarının ("Yazılım") bir kopyasını edinen herhangi bir kişiye, Yazılımın kopyalarını kullanma, kopyalama, değiştirme, birleştirme, yayınlama, dağıtma, alt lisans verme ve/veya satma hakları dahil ancak bunlarla sınırlı olmamak üzere herhangi bir kısıtlama olmaksızın Yazılımla ücretsiz olarak ilgilenme ve Yazılımın sağlandığı kişilerin bunu yapmasına izin verme izni verilmektedir. aşağıdaki koşullara tabi olarak:

Yukarıdaki telif hakkı notu ve bu izin notu Yazılımın tüm kopyalarına veya önemli bölümlerine eklenmelidir.

YAZILIM AÇIK VEYA ÖRTÜK HİÇBİR TÜR GARANTİ VERİLMEKSİZİN " OLDUĞU GİBİ" SAĞLANIR VE AYRICA HİÇBİR SINIRLAMA OLMAKSIZIN SATILABİLİRLİK VEYA BELİRLİ BİR AMACA UYGUNLUK DA DAHİL OLMAK ÜZERE HİÇBİR GARANTİ VERİLMEZ. YAZARLAR VEYA TELİF HAKKI SAHİPLERİ, YAZILIMIN KULLANILMASINDAN VEYA KULLANILAMAMASINDAN DOĞAN VEYA YAZILIMLA BAĞLANTILI OLAN HİÇBİR ZARARDAN SORUMLU TUTULAMAZ.