takataka430’s blog

.NET系を中心に勉強したことのまとめを書きます

Azure Speech Serviceの発音評価機能を試す

Speech Serviceに発音評価機能があったので試してみました。

docs.microsoft.com

環境

Microsoft Visual Studio Community 2019 Version 16.11.2
Microsoft.CognitiveServices.Speech 1.18.0

コード

C#のコンソールアプリケーションを作成し、Nuget パッケージマネージャー からMicrosoft.CognitiveServices.Speechをインストールします。
コードは以下のようにします。

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
using Microsoft.CognitiveServices.Speech.PronunciationAssessment;
using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {

        static async Task Main(string[] args)
        {
            Console.WriteLine("評価したいテキストを入力してください");
            var refText = Console.ReadLine();

            var speechConfig = SpeechConfig.FromSubscription("[Subscription Key]", "[Region]");

            var audioConfig = AudioConfig.FromDefaultMicrophoneInput();

            var pronunciationAssessmentConfig = new PronunciationAssessmentConfig(
                refText, 
                //スコアを100点満点で表示
                GradingSystem.HundredMark);

            using (var recognizer = new SpeechRecognizer(speechConfig, audioConfig))
            {
                pronunciationAssessmentConfig.ApplyTo(recognizer);
                Console.WriteLine("評価を開始します 録音中・・・");

                //録音開始
                var speechRecognitionResult = await recognizer.RecognizeOnceAsync();

                //評価結果の取得
                var pronunciationAssessmentResult =
                        PronunciationAssessmentResult.FromResult(speechRecognitionResult);
                var fluencyScore = pronunciationAssessmentResult.FluencyScore;
                var pronunciationScore = pronunciationAssessmentResult.PronunciationScore;

                Console.WriteLine("流暢さ:" + fluencyScore);
                Console.WriteLine("スコア:" + pronunciationScore);
            }
        }
    }
}

これを実行すると以下のようになります。

評価したいテキストを入力してください
Hello
評価を開始します 録音中・・・
流暢さ:100
スコア:98.8

今回はHelloという単語を評価してもらうように入力しました。(上記の2行目)
テキストを入力すると録音が開始されます。マイクに向かって声を入力してから評価がでるまで少し時間がかかります。
今回は流暢さとスコアを表示してみました。面白い機能ですね。