最近在使用Qt编写一个客户端程序的时候需要增加语音识别输入的功能。起初尝试使用SAPI来完成这个任务,但是发现SAPI不仅使用起来超级复杂,而且识别效果也很惨烈。于是就需要寻找一个更加便捷优秀的方案。
自从Chrome 11开始,Chrome开始支持HTML5的语音输入API,QQ紧接着也推出了语音识别输入(可以看做跟风么:D)。显然这些识别操作不可能在本地完成,那么我们就有直接利用接口的可能。
对Chromium的repo进行搜索之后,终于找到了Chromium对语音识别的实现代码:
http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/speech/
分析过程就算了,直接上成果。
Chromium先从mic获取音频,然后使用flac或者speex进行编码,直接通过HTTPS POST到服务器。接口地址如下:
https://www.google.com/speech-api/v1/recognize
Chromium在请求时还会拼上很多参数:
xjerr=1&client=chromium&lang=en-US&maxresults=1
注:参数解释
xjerr=1 # 不详,猜测为错误的标准
client=chromium # 客户端类型,这里是Chromium,猜测Chrome也应该可行,估计是作为统计用的。
lang=en-US # 语言类型,这里是英文,中文为zh-CN,其余语言代码参考:http://msdn.microsoft.com/en-us/library/ms533052(v=vs.85).aspx
maxresults=1 # 最大返回结果数量,多个结果在hypotheses列表中保存。
参数很明了,这给我们提供了很多便利。我们对参数进行调整,得到如下的接口地址:
http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1
接下来祭出wget,对已经发现的接口进行测试:
结果如下:
注:注释后为手工添加的结果解释
返回结果太明了了!直接就能拿来用了不是~ 返回的编码是UTF-8。
对于编码格式,在测试中使用了FLAC编码,采样率为16kHz,经测试其他采样率同样可用,但一定要保证Header里的rate与实际数据相符。(关于其他格式的实验请看本文底部。)
总结:
1、基本流程:
一、从音频输入设备获取原始数据。二、对原始数据进行包装、编码。三、将编码后的音频POST至接口地址。四、分析处理接口返回的JSON并得出结果。
2、请求接口
请求方式:HTTP POST头部信息:Content-Type: audio/x-flac; rate=16000 (注:Content-Type根据所使用的编码格式不同而不同,详见文章底部。rate为音频采样率。)请求数据:编码后的音频数据
3、音频编码格式:
FLAC或WAV或SPEEX
下面是我写的Qt(C++)中的请求:
至于读取函数,就不贴在这里了,具体见:
Protocol: http://pastebin.com/6G6wggfF
AudioInput:
speechInput.h: http://pastebin.com/qdMPeWZD
speechInput.cpp: http://pastebin.com/567B47qF
main:
mainwidget: http://pastebin.com/c8bk7zd2
在翻阅Chromium源码的过程之中,还发现了其他有用的东西:
Speech Input API Specification http://www.w3.org/2005/Incubator/htmlspeech/2010/10/google-api-draft.html
到目前为止,Google好像还没有公开这个API,使用许可依旧不详,请求也没有用到任何认证。但它确实能用,而且十分方便,对于编写非商业程序的人来说,这个东西真的是再好不过了(因为它有着高的爆表的识别率)。
参考:
Chromium Repository http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/speech/
Accessing Google Speech API / Chrome 11 http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/
相关推荐
1. **OAuth 2.0**:Google Voice API使用OAuth 2.0进行授权,确保只有经过用户同意的应用才能访问其数据。 2. **限制与配额**:Google会对API的使用设置一定的配额限制,超出限制可能会导致额外费用或服务受限。 四...
在这个PHP实例中,开发者可能使用了Google的API客户端库来与Google Voice服务进行通信,可能涉及到OAuth 2.0授权流程,用于获取用户的Google Voice服务访问权限。发送短信的功能可能涉及到HTTP请求的构造,可能使用...
4. **发送短信**:使用Google Voice API发送短信涉及到认证过程,通常需要API密钥和应用ID。此接口可能实现了这些步骤,让用户能够通过简单的函数调用发送短信,而无需处理底层的HTTP请求和响应。 5. **无限短信**...
总的来说,"googlevoice"项目是一个关于如何利用JavaScript与谷歌语音API进行交互的示例。它涵盖了从设置API、获取用户授权、执行不同操作(如发送短信、接收语音邮件、转录音频和拨打电话)到处理响应的整个流程。...
【标题】中的“基于PHP的GoogleVoice短信发送接口PHP开源版支持群发源码”指出,这是一个使用PHP编程语言开发...通过深入研究源代码,开发者不仅可以学习到如何使用GoogleVoice API,还能提升PHP编程和接口设计的能力。
安装 gem install googlevoiceapi用法 该gem为您的应用程序提供了一个类GoogleVoice :: Api。 如果您有权访问Google语音,则可以使用您的Google帐户凭据来初始化该类。 然后,您可以使用对象与Google语音的功能进行...
1. Google Voice API的使用,包括OAuth 2.0身份验证。 2. PHP编程基础,如HTTP客户端(Guzzle)的使用,发送HTTP请求,解析JSON响应。 3. RESTful API的设计和交互。 4. OAuth 2.0协议的理解和实施。 5. 账号权限...
这通常涉及到使用API(应用程序接口)与Cloudflare或Google Voice通信,进行身份验证并发送预定义的消息。 5. **API调用**:API允许不同的软件应用之间相互通信。在这个项目中,Python脚本会使用相关的API密钥和...
【谷歌语音(GOOGLE VOICE)无限短信接口程序 V2.0】 谷歌语音是一个由Google提供的电话服务,它允许用户发送和接收短信、打电话以及管理多个电话号码。在这个V2.0版本的程序中,开发者提供了更强大的功能,使得与...
2. **HTTP请求与响应**:在实现Google Voice接口时,需要使用PHP的cURL库或file_get_contents函数进行HTTP请求,向Google Voice API发送POST或GET请求来执行短信发送操作。同时,理解HTTP协议的基本原理,如请求头、...
2. **获取Google Voice API权限**:在Google Cloud Console创建项目并启用Google Voice API,获取OAuth2客户端ID和秘密。 3. **配置接口**:将API密钥和用户凭据填入配置文件。 4. **测试接口**:使用提供的示例...
API 是应用程序编程接口,开发者可以使用它来与Google Voice服务进行交互,如发送和接收短信。 3. **API调用**:在PHP中,调用Google Voice API可能涉及到HTTP请求(如POST或GET)和JSON数据格式,用于传递和接收...
3. **API接口调用**:学习如何使用PHP调用GoogleVoice的API,包括如何构造请求参数、设置认证信息(如OAuth 2.0)以及处理API响应。 4. **GoogleVoice API**:研究GoogleVoice提供的API文档,了解如何发送短信,...
【标题】中的“基于PHP的Google Voice 短信发送接口PHP开源版 支持群发”表明这是一个使用PHP编程语言开发的项目,其主要功能是实现通过Google Voice服务发送短信,并且支持短信的群发功能。这个开源版本意味着源...
标题 "springboot-googleapi" 指示这是一个关于使用Spring Boot与Google API集成的项目,主要涉及OAuth2授权协议。让我们深入探讨这个主题。 在Java开发中,Spring Boot以其简化和快速的应用程序启动能力而闻名。它...
3. **OAuth认证**:Google Voice服务通常使用OAuth进行身份验证,开发者需要在PHP代码中实现OAuth认证流程,获取访问令牌以安全地访问API。 4. **JSON数据处理**:API请求和响应通常以JSON格式进行,因此,开发者...
C#中的Google Voice API; 更新!
【标题】与【描述】提及的是一个名为"google-voice-java"的项目,它是...尽管Google Voice API已经不再支持新的应用,但对于研究历史项目、学习旧API的使用以及了解如何处理类似API的开发者来说,仍然具有一定的价值。
在"voice-mini"项目中,核心是使用Python的`google-cloud-speech`库来与Google Speech API进行交互。这个库提供了简单易用的接口,可以方便地上传音频数据并获取识别结果。首先,你需要安装这个库,可以使用以下命令...
- 根据你的特定需求,可能需要与其他库或服务(如Google Cloud Speech-to-Text API)集成,以增强识别性能或实现特定功能。 总之,VoiceBox是一个强大且功能丰富的语音处理工具箱,它为MATLAB用户提供了实现语音...