
Google Chromeブラウザーでは、しばらくの間音声認識が
利用できました。 たとえば、
ここでその外観を確認でき
ます 。
元のChromiumは公開されているため
、この技術を地球上の平和の始まり
という利己的な目的に使用できるかどうかを探りたいという自然な欲求があります。
よくあることですが、この
記事ではすべてがすでに行われています。 すべてが非常にシンプルであることが判明したため、
FLACまたは
Speex形式の音声データを使用して、アドレス
www.google.com/speech-api/v1/recognizeに POSTリクエストを行う必要があります。 C#を使用して
WAVEファイルの認識のデモを実装します。
元のトピックの著者のように、Speexを混乱させません。 サウンドをWave形式からFLACに変換するために、
Cuetoolsライブラリを使用し
ました 。 何らかの理由で、2つを除く任意の数のチャンネルでFLACを保存しようとすると、コードに例外がスローされましたが、このチェックをコメントアウトするだけで、Googleが完全に理解するモノファイルは安全に保存されます。
誰かが欲求を持っている場合、一時的なFLACファイルに保存せずに実装する問題はないと思いますが、例を複雑にしません。 Googleが400エラーで高いサンプリングレート(44100)のファイルに反応したことに気づいただけですが、最大可能周波数である8および16 kHzが問題なく動作することはわかりませんでした。
Google Voiceを照会する主な方法:
public static String GoogleSpeechRequest(String flacName, int sampleRate) { WebRequest request = WebRequest.Create("https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU"); request.Method = "POST"; byte[] byteArray = File.ReadAllBytes(flacName);
DataContractJsonSerializerを介してJSON応答の逆シリアル化を行います。率直に言って、私は強くありません。さらに、Googleからの結果は常に次の形式で送信されます。
{"status":0,"id":"4531050901df65542082eacfebf3bb1b-1","hypotheses":[{"utterance":" ","confidence":0.89697623}]}
したがって、次の簡単な逆シリアル化で十分でした。コメントをお待ちしております。
[DataContract] public class RecognizedItem { [DataMember] public string utterance; [DataMember] public float confidence; } [DataContract] public class RecognitionResult { [DataMember] public string status; [DataMember] public string id; [DataMember] public RecognizedItem[] hypotheses; } public static RecognitionResult Parse(String toParse) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(RecognitionResult)); MemoryStream stream1 = new MemoryStream(ASCIIEncoding.UTF8.GetBytes(toParse)); RecognitionResult result= (RecognitionResult)ser.ReadObject(stream1); return result; }

スクリーンショットでは、「自転車を購入」が完全に正しく認識され、「2回」は「1 2 rus」と認識されました。
ここからソースコードアーカイブをダウンロード
します 。
制限なしで利用できるようになるまで、テクノロジーをお楽しみください!