非常厲害的語音轉文字(語音識別, 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 的話,個人語音助理的時代還會遠嗎?
留言