三、Audio To Text
本节来概要的谈一下利用Google的Api实现将语音转换为文字
请求的URL为:http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN
http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1
参数:
1、xjerr ???参数功能不详,值只能是0或1,去掉也能正常获得结果;
2、client 客户端类型
3、lang 语言类型,英文为en-US。更多参见http://msdn.microsoft.com/en-us/library/ms533052(v=vs.85).aspx
4、maxresults 最大返回结果数量,多个结果在hypotheses(请求返回的数据项)列表中保存。
使用方式:
protected void Page_Load(object sender, EventArgs e) { Response.Write(GoogleSTT()); } private string GoogleSTT() { string result = string.Empty; string inFile = @"F:\hebeidaxue.wav"; FileStream fs = new FileStream(inFile, FileMode.Open); byte[] voice = new byte[fs.Length]; fs.Read(voice, 0, voice.Length); fs.Close(); HttpWebRequest request = null; string url = "http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN"; Uri uri = new Uri(url); request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "audio/L16; 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(); } } } return result; }
返回结果的格式
{"status":0,"id":"a44e9fab4888a7713175a07b035d49ad-1","hypotheses":[{"utterance":"大家早上好","confidence":0.7236291}]}
其实就是通过Http向google发送语音请求,返回的是识别的内容。
需要注意: request.ContentType
google默认的是request.ContentType = "audio/x-flac; rate=16000; 即:支持flac格式的语音。
其他的语音格式:
1、WAV格式
请求Header:Content-Type: audio/L16; rate=16000
返回结果:识别成功
2、MP3格式
请求Header:Content-Type: audio/mpeg; rate=16000
返回结果:无法识别的编码
请求Header:Content-Type: audio/mpeg3; rate=16000
返回结果:无法识别的编码
请求Header:Content-Type: audio/x-mpeg; rate=16000
返回结果:无法识别的编码
请求Header:Content-Type: audio/x-mpeg-3; rate=16000
返回结果:无法识别的编码
请求Header:Content-Type: audio/mp3; rate=16000
返回结果:无法识别的编码
3、PCM格式
请求Header:Content-Type: audio/x-ogg-pcm; rate=16000
返回结果:无法识别的编码
请求Header:Content-Type: audio/pcm; rate=16000
返回结果:无法识别的编码
4、SPEEX格式
请求Header:Content-Type: audio/x-speex-with-header-byte; rate=16000
返回结果:识别成功
请求Header:Content-Type: audio/speex; rate=16000
返回结果:识别成功
无法识别的类型,就只能转码之后在去请求了。
本机测试语音时候可以通过软件Audacity去录音(rate=16000),然后保存为想要的格式。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具