| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using System.Net;
- using System.Net.Http.Headers;
- using System.Text;
- namespace TextToSpeechService;
- public class GoogleSTTHubClient
- {
- public HttpClient Client { get; private set; }
- public async Task Demo()
- {
- string inFile =AppDomain.CurrentDomain.BaseDirectory+ "/test/demo.wav";
- FileStream fs = new FileStream(inFile, FileMode.Open);
- byte[] voice = new byte[fs.Length];
- fs.Read(voice, 0, voice.Length);
- fs.Close();
- await Speech(voice);
- }
- public GoogleSTTHubClient(HttpClient httpClient)
- {
- httpClient.BaseAddress = new Uri("http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1");
- //httpClient.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
- //httpClient.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
- //httpClient.DefaultRequestHeaders.Add("content-type", "audio/x-flac; rate=16000");
- Client = httpClient;
- }
- /// <summary>
- /// api调不通
- /// 新版本的API: api:地址: https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=yourkey
- /// URL路径: 之前的V1变成V2
- /// 参数: 新增output:输出类型,我们一般用json 新增KEY:需要去google注册帐号,申请apikey 其他的参数都能够继续使用
- /// 开源代码:http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/speech/
- /// </summary>
- /// <param name="voice"></param>
- /// <returns></returns>
- public async Task<string> Speech(byte[] voice)
- {
- HttpContent content = new StreamContent(new MemoryStream(voice));
- content.Headers.ContentType = new MediaTypeHeaderValue("audio/x-flac; rate=8000");
- var result= await Client.PostAsync("",content);
- await using Stream responseStream = await result.Content.ReadAsStreamAsync();
- using StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8);
- var text = await readStream.ReadToEndAsync();
- return text;
- }
- /// <summary>
- /// 调用google语音识别引擎
- /// </summary>
- /// <returns></returns>
- private string GoogleSTT(byte[] voice)
- {
- string result = string.Empty;
- try
- {
- //string inFile = "audio.wav";
- //FileStream fs = new FileStream(inFile, FileMode.Open);
- //byte[] voice = new byte[fs.Length];
- //fs.Read(voice, 0, voice.Length);
- //fs.Close();
- string url = "http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN";
- Uri uri = new Uri(url);
- #pragma warning disable CS0618
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
- #pragma warning restore CS0618
- request.Method = "POST";
- request.ContentType = "audio/x-flac; rate=16000";
- request.ContentLength = voice.Length;
- using (Stream writeStream = request.GetRequestStream())
- {
- writeStream.Write(voice, 0, voice.Length);
- }
- using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
- {
- using (Stream responseStream = response.GetResponseStream())
- {
- using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8))
- {
- result = readStream.ReadToEnd();
- }
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.StackTrace);
- }
- return result;
- }
-
- }
|