1
回答
大家一起来分析google语音搜索API,Speex编码问题
终于搞明白,存储TCO原来是这样算的>>>   

想用Google 语音搜索的API,Chrome 浏览器上就使用了,以前chrome上使用的是speex语音编码,非常好,一段话编码后就几K,音质也很清晰,可没几天Google就换成Flac编码了,这样说一句话起码上百K,实在搞不懂为什麽要换Flac。不过speex编码的接口依然能用,可是就是生成不了符合要求的speex编码音频,Flac只要符合16000采样率就行,是标准的Flac数据头,测试通过。

API地址:http://www.google.com/speech-api/v1/recognize?lang=zh&client=chromium&xjerr=1&maxresults=1

Content-Type: audio/x-speex-with-header-byte; rate=16000

识别成功了就会返回json数据

我用speexenc.exe 将PCM数据转成spx格式,POST上去,识别不了,

speexenc.exe 是使用OGG封包的,数据头是OggS开头。

Chrome使用语音搜索时我抓包了下,发现POST上去的数据并不是OGG格式封装,而且也见不到Speex编码的字符串,我直接将PCM数据编码就导出,没数据头,POST上去也识别不了

但从Content-Type: audio/x-speex-with-header-byte可以看出应该是有加数据头的。

我就抓三次包,对比下,发现有两次前面几行是一样的,一次有区别

第一次

.F.fh...9.sGl.........+...F......9vsGl6..6.....6..

..o...v...

...x..v...

...H..v...

......v...

..f...v..B

...`..v...

..gh..v..@

..g...v..@

..f0..p...

..f...v...

..g...v...

..fh..v...

..g...v..B

......v...

...x..v...F5.!....2.;h...2.C.....".#..d...]J

第二次

.F.fh...9.sGl.........+...F......9vsGl6..6.....6..

..o...v...

...x..v...

...H..v...

......v...

..f...v..B

...`..v...

..gh..v..@

..g...v..@

..f0..p...

..f...v...

..g...v...

..fh..v...

..g...v..B

......v...

...x..v...F5......d.;h...2.C.......#..o.D.Q

第三次

.F.n8...9.sGl...6..6..6...F.fP.....sGl9..6..0..6..

..gx..v...

..n`..v..D

...|..v..

..o...v. .

......v...

..oL..v...

......v..@

... ..p...

...(..p. .

..g...v...

..f...p...

..nh..v..D

..nP..v..@

..f...v...

......v..@V=..D..........m.[m...?........u..[...........d.E.....

 

我只能去看chromium源码了,虽然语音搜索API是chromium 11正式版开始添加的,可没几天就换成Flac编码了,上面只有部分Speex编码代码。还好OSchina收录了使用speex编码的版本

http://www.oschina.net/code/explore/chromium.r67069/chrome/browser/speech

下面是speex编码的核心代码

http://www.oschina.net/code/explore/chromium.r67069/chrome/browser/speech/speech_recognizer.cc

可我并没有找到添加数据头的地方,Google也没有修改Speex的核心源码,

只看到下面这句

     //Encode the frame and place the size of the frame as the first byte. 

//This is the packet format for MIME type x-speex-with-header-byte.
腾出第一个字节不编码保留数据头,一个字节够数据头?没弄明白

大家帮忙分析下吧,就为这个Speex编码熬了好几天了....

另外还抓到了Android 和Iphone 的语音搜索的API

http://www.google.com/m/appreq/vs  

http://www.google.com/m/appreq/gmiphone

Content-Type: application/binary

这个上传的声音数据头加了手机版本信息等数据头,好像使用ARM格式录制,但和PC端用的API不一样,POST要2次,还要用cookies去获取数据,返回的数据还是加密的,比较麻烦。

 

举报
吴可
发帖于6年前 1回/3K+阅
顶部