非常厲害的語音轉文字(語音識別, STT)服務

在Azure的cognitive services當中,也有非常厲害的語音轉文字(語音識別)服務,從底下的這個 Console程式中你可以發現,語音服務幾乎完整的辨識筆者講的話,甚至速度加快也可以,中英文夾雜也可以:

要使用此服務相當簡單,同樣在Azure Portal上申請即可:

申請完成之後,取得 key 和 location,即可透過 .net SDK來開發。

例如,如果你想做一個語音助理,希望寫程式來識別用戶說的話,其實程式碼可能只有類似底下這幾行:


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

namespace STT_example
{
    class Program
    {
        async static Task FromMic(SpeechConfig speechConfig)
        {
            using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
            using var recognizer = new SpeechRecognizer(speechConfig, "zh-tw", audioConfig);

            Console.WriteLine("嗨~ 請透過語音下達指令..., 直到說 '我要離開' ");
            var text = "";
            while (!text.Contains("離開"))
            {
                var result = await recognizer.RecognizeOnceAsync();
                text = result.Text;
                Console.WriteLine($"\n識別語音 = '{text}' 。\n(如果要結束,請說 '我要離開')");
            }
            Console.WriteLine("\n\n 掰掰~ ");
        }

        static void Main(string[] args)
        {
            // Set console encoding to unicode
            Console.InputEncoding = Encoding.Unicode;
            Console.OutputEncoding = Encoding.Unicode;

            var speechConfig = SpeechConfig.FromSubscription(
                "___your__key____", "___localtion___");
            FromMic(speechConfig).GetAwaiter().GetResult();
        }
    }
}

請注意到此程式碼中使用到了 Microsoft.CognitiveServices.Speech 套件。

讀者可透過從筆者的 GitHub下載此範例:

git clone https://github.com/isdaviddong/STT_example.git

我們再次來看執行的結果(有聲音):

有沒有發現很有趣?

語音服務幾乎完整的辨識筆者講的話,甚至速度加快也可以,中英文夾雜也可以。

由於我在程式碼(19行)中撰寫了一個loop,因此程式會持續辨識我說的每一句話,直到我說出 ‘離開’ 這個關鍵字,系統辨識到之後就跳出迴圈。

主要的語音辨識類別是 SpeechRecognizer這個物件,其中的 RecognizeOnceAsync() 方法,會依照我們設定的 config profile,來抓取音源,此例中為預設麥克風 – 程式碼第20行的FromDefaultMicrophoneInput()。

在建立SpeechRecognizer物件時,透過 “zh-tw” 清楚的指定來源的音訊為台灣華語會更有效的加強辨識度。

你有沒有發現,現在的語音識別,在AI加持的狀況下,已經不可同日而語。如果你看到語音輸出會更覺得驚艷,現在的語音已經幾乎讓你分不出是否為真人!

若進一步搭配 ChatGPT 的話,個人語音助理的時代還會遠嗎?

留言

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

在POC或迷你專案中使用 LiteDB

專業的價值...

精彩(且驚人)的Semantic Kernel入門範例

Azure Web App 的基本驗證被停止了!