Ses girişiyle ilgili sorunları yönetme

Windows Uygulama SDK'sı uygulamanızda konuşma tanıma sırasında ses girişi kalitesi sorunlarını nasıl çözeceğinizi öğrenin.

Important

Konuşma tanıma için MSIX paket kimliği gerekir. Windows.Media.SpeechRecognition API’leri, yalnızca uygulamanız paket kimliğiyle (paketlenmiş veya dış konumla paketlenmiş olarak) çalıştığında kullanılabilir. Paketlenmemiş uygulamalar bu API'leri kullanamaz.

Anahtar API'leri

Genel Bakış

Ses girişi kalitesi, konuşma tanımanın doğruluğunu etkileyebilir. Arka plan gürültüsü, boğuk mikrofonlar ve düşük ses düzeyi, tanıma hatasının yaygın nedenleridir. Ses kalitesinin doğru tanımayı engelleyebileceği durumlarda kullanıcıyı bilgilendirmek için RecognitionQualityDegrading olayını işleyin.

Kalite düşüşüyle başa çık

RecognitionQualityDegrading olayı, ses sorunları konuşma tanımayı etkileyebileceğinde tetiklenir. SpeechRecognitionQualityDegradingEventArgs.Problem Belirli bir sorunu belirlemek için özelliğini kullanın.

Bu olay bir arka plan iş parçacığında tetiklendiğinden kullanıcı arabirimini güncelleştirmek için kullanın DispatcherQueue.TryEnqueue :

private void SpeechRecognizer_RecognitionQualityDegrading(
    SpeechRecognizer sender,
    SpeechRecognitionQualityDegradingEventArgs args)
{
    dispatcherQueue.TryEnqueue(() =>
    {
        // Show a message or indicator to the user.
        // args.Problem identifies the specific audio quality issue.
        switch (args.Problem)
        {
            case SpeechRecognitionAudioProblem.TooFast:
                statusTextBlock.Text = "Try speaking more slowly.";
                break;
            case SpeechRecognitionAudioProblem.TooSlow:
                statusTextBlock.Text = "Try speaking a bit faster.";
                break;
            case SpeechRecognitionAudioProblem.TooQuiet:
                statusTextBlock.Text = "Try speaking louder or move closer to the microphone.";
                break;
            case SpeechRecognitionAudioProblem.TooLoud:
                statusTextBlock.Text = "Try speaking more quietly or move farther from the microphone.";
                break;
            case SpeechRecognitionAudioProblem.TooNoisy:
                statusTextBlock.Text = "Background noise is interfering with recognition. Try a quieter environment.";
                break;
            case SpeechRecognitionAudioProblem.None:
            default:
                statusTextBlock.Text = "";
                break;
        }
    });
}

Bu işleyiciyi kullanmak için, tanıyıcınızı oluşturduktan sonra olaya abone olun:

speechRecognizer.RecognitionQualityDegrading += SpeechRecognizer_RecognitionQualityDegrading;

UI iş parçacığıyla ilgili dikkat edilmesi gerekenler

WinUI 3'te, çağrıları kullanıcı arabirimi iş parçacığına yönlendirmek için CoreDispatcher yerine DispatcherQueue kullanın. Sayfa oluşturucunuzda veya başlatma mantığınızda geçerli iş parçacığı için DispatcherQueue öğesine bir referans alın:

private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue =
    Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();

Ardından kullanıcı arabirimi öğelerini güvenli bir şekilde güncelleştirmek için olay işleyicilerinizde kullanın dispatcherQueue.TryEnqueue(...) .