2017-05-31 156 views
3

使用此代碼,我在一個YouTube視頻發現(不知道如果我能夠發佈):谷歌雲API語法

if (File.Exists("audio.raw")) 
{ 
    var speech = SpeechClient.Create(); 
    var response = speech.Recognize(new RecognitionConfig() 
    { 
     Encoding = RecognitionConfig.Types.AudioEncoding.Linear16, 
     SampleRateHertz = 16000, 
     LanguageCode = "iw", 
    }, RecognitionAudio.FromFile("audio.raw")); 

    textBox1.Text = ""; 

    foreach (var result in response.Results) 
    { 
     foreach (var alternative in result.Alternatives) 
     { 
      textBox1.Text = textBox1.Text + " " + alternative.Transcript; 
     } 
    } 

    if(textBox1.Text.Length == 0) 
     textBox1.Text = "No Data "; 
    StreamingMicRecognizeAsync(10); 
} 
else 
{ 
    textBox1.Text = "Audio File Missing "; 
} 

我能夠創建一個語音識別基於谷歌雲api。

但是,我找不到用這種方法創建語法的方法,因此我在尋找建議。

如何爲Google API創建語法過濾? (例如:輸入一個「一」,「二」,「三」的主字符串,然後如果你輸入例如「tu」,那麼可能有人做了一個項目,它會輸出「兩個」,如果你輸入「今天」它會輸出沒有適合等,如微軟的語法)

我讀過關於SpeechContexts,但它只讀在C#中,我真的無法得到一些工作。

有什麼建議嗎?

編輯:

另外我怎樣才能離線使用它?會很棒......或者至少讓它更快。

我嘗試過流選項,但它不準確。

+0

「另外,如何離線使用它會很棒......或者至少使它更快。你不能 - 它是一項雲服務,因此不能脫機使用。我不知道你的意思是「流媒體選項不準確」 - 它對我來說工作得很好。不知道你的意思是什麼關於SpeechContext是隻讀的,不是。我在我的答案中增加了一個例子。 –

+0

@JonSkeet我已回覆您的評論,請檢查它。 –

回答

3

假設你只想補充SpeechContext您的要求,只需添加實例到RecognitionConfigSpeechContexts屬性:

var context = new SpeechContext { Phrases = { "first", "second" } }; 
var config = new RecognitionConfig() 
{ 
    Encoding = RecognitionConfig.Types.AudioEncoding.Linear16, 
    SampleRateHertz = 16000, 
    LanguageCode = "iw", 
    SpeechContexts = { context } 
}; 

(一般情況下,性能在protobuf的代表地圖和列表讀取 - 但是你可以添加它們 - 要麼顯式地調用Add,要麼使用上面的集合初始值設定項。)

+0

我有一個只讀的變量錯誤...我沒有解決它,你的評論也幫助了我。雖然我知道雲服務顯然是一項在線服務,但對於手機來說,現在有谷歌,據我所知,這是一項離線服務。對於桌面系統來說,是不是有些陌生的東西(通過任何名字)? –

+0

@matan:我相信Google智能助理等有完全不同的SDK。我不知道谷歌語音API的離線版本。 –