練習 - 建立單次辨識語音轉換文字應用程式

已完成

在此練習中,您將會建立使用單次辨識來轉譯您所下載範例音訊檔案的應用程式。

建立語音轉換文字應用程式

  1. 在右側的 Cloud Shell 中,建立應用程式的目錄,然後變更為新的目錄:

    mkdir speech-to-text
    cd speech-to-text
    
  2. 建立新的 .NET Core 應用程式:

    dotnet new console
    

    此命令應該會需要幾秒鐘的時間才能完成。

  3. 建立 .NET Core 應用程式之後,請將語音 SDK 套件新增至您的應用程式:

    dotnet add package Microsoft.CognitiveServices.Speech
    

    此命令應該會需要幾秒鐘的時間才能完成。

下載 WAVE 檔案以進行辨識

在右側的 Cloud Shell 中,執行下列命令以下載範例 WAV 檔案,其中包含來自 William Shakespeare 戲劇「皆大歡喜」的一系列台詞。

curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav

您將會針對本練習中的應用程式和下一個練習中的應用程式,使用此 WAV 檔案。

新增文字轉換語音應用程式的程式碼

  1. 在右側的 Cloud Shell 中,開啟 Program.cs 檔案:

    code Program.cs
    
  2. 移除所有現有的程式碼並且新增下列 using 陳述式,為應用程式啟用 Azure AI 語音 API:

    using System.Text;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
  3. 新增下列程式碼,其使用 Azure AI 語音 API 來轉換您稍早建立的 WAV 檔案內容,以使用轉譯的語音建立文字檔。 將 azureKeyazureLocation 值取代為您在上一個練習中複製的值。

    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    此程式碼會使用您的金鑰和位置來初始化 Azure AI 語音的連線。 然後會讀取您下載的 WAV 檔案內容,接著使用 SpeechRecognizerRecognizeOnceAsync() 方法將音訊轉換成文字,然後使用資料流寫入器將結果儲存至文字檔。

  4. 當您完成新增所有程式碼之後,您的檔案應該類似下列範例:

    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    請務必使用上一個練習中的金鑰和位置來更新 azureKeyazureLocation 變數的值。

  5. 若要儲存變更,請按 Ctrl+S 儲存檔案,然後按 Ctrl+Q 結束編輯器。

執行您的應用程式

  1. 若要執行您的應用程式,請在右側的 Cloud Shell 中使用下列命令:

    dotnet run
    
  2. 如果您沒有看到任何錯誤,您的應用程式已成功執行,您應該會看到顯示下列回應:

    Speech recognition started.
    Speech recognition stopped.
    
  3. 請執行下列命令以取得目錄中的檔案清單:

    ls -l
    

    您應該會收到類似下列範例的回應,而且您應該會在檔案清單中看到 Shakespeare.txt 檔案:

    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 bin
    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 obj
    -rw-r--r-- 1 user   user     1476 Oct  1 11:11 Program.cs
    -rw-r--r-- 1 user   user       98 Oct  1 11:11 Shakespeare.txt
    -rwxr-xr-x 1 user   user   978242 Oct  1 11:11 Shakespeare.wav
    -rw-r--r-- 1 user   user      348 Oct  1 11:11 speech to text.csproj
    

    您會注意到文字檔的大小很小;在此範例中,只有 98 個位元組。

  4. 若要檢視 Shakespeare.txt 檔案的內容,請使用下列命令:

    cat Shakespeare.txt
    

    您應該會看到類似以下範例的回應:

    The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
    

    如果您聆聽範例 WAV 檔案,您會注意到此文字只是音訊的前幾秒。 由於我們使用 SpeechRecognizerRecognizeOnceAsync() 方法,因此說話者暫停時,語音轉換文字辨識就會停止。

在下一個練習中,您將會了解如何繼續整個音訊檔案的語音轉換文字辨識。