Android平台应用PocketSphinx做离线语音识别,小范围语音99%识别率

Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率最近语音识别很火,但是都是用的在线语音

Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率

最近语音识别很火,但是都是用的在线语音识别,研究了一下离线语音识别,小范围内的语音识别率还不错,在此记录一下

首先本文要说的两个前提1.android平台离线语音识别 2.小范围语音

小范围语音指的是相对固定的命令。本文的例子大概实现了20条语音命令,超出范围的无法识别。因此本文中离线语音的使用范围也有限,对于一些固定的输入可能有用,比如用语音命令代替打开,播放,重启这些简单的固定的命令。

先上个例子

1.按照 http://leiwuluan.iteye.com/blog/1287305 的方法,先跑一个PocketSphinxDemo的例子起来。跑起来之后会发现语音识别率很低,大概20%不到。下面来优化一下

2.编写自己的命令集

<s>左转</s>
<s>右转</s>
<s>向左转</s>
<s>向右转</s>
<s>打开</s>
<s>搜索</s>
<s>播放</s>

保存为command.txt

在http://www.speech.cs.cmu.edu/tools/lmtool.html上点Browse,提交command.txt,在线生成语言模型文件。

3.在网站上会生成一个.tar.gz文件,下载后解压,其中有一个dic和lm文件,拷出来

4.替换语言模型文件。在1中的demo里面,要将指定声音文件和语言模型文件,在RecognizerTask.RecognizerTask()里,有一段

??c.setString("-hmm", "/sdcard/Android/data/test/hmm/tdt_sc_8k");
??c.setString("-dict", "/sdcard/Android/data/test/lm/test.dic");
??c.setString("-lm", "/sdcard/Android/data/test/lm/test.lm");

将3中生成的lm和dic文件分别放到sd卡的上述目录

将 http://downloads.sourceforge.net/project/cmusphinx/pocketsphinx/0.7 /pocketsphinx-0.7.tar.gz?r=http%3A%2F %2Fsourceforge.net%2Fprojects%2Fcmusphinx%2F&ts=1332729739& use_mirror=nchc下载的pocketsphinx下面的model/hmm/zh/tdt_sc_8k 下的文件放到/sdcard/Android/data/test/hmm目录下

附件中的data是我使用的文件,可以直接解压后放到sd卡的以上目录,注意,tdt_sc_8k是一个文件夹不是文件

5.文件准备完毕,重新跑1中的demo。语音输入2中的命令,识别率99%以上,但是输入命令集以外的无法识别。

6.附件为工程文件,将data解压,按照工程中4里面写的位置放到sd卡里面即可

?

1 楼 zhoudong123 2012-04-16   怎么报错? 2 楼 zuoshu 2012-04-16   zhoudong123 写道怎么报错?
Log贴来看看?运行的前提是先跑通PocketSphinxDemo,见1 3 楼 cs3230524 2012-04-17   请问tdt_sc_8k 里面是什么? 4 楼 cs3230524 2012-04-17   亲!你工程里面的路径是/sdcard/Android/data/zuoshu/..怪不得我一直报InputDispatcher异常 5 楼 cs3230524 2012-04-17   楼主,你所述的方法根本不能用于生成中文声学模型,得用CMUCLMTK自己做。。。不知道你是怎么成功的。。。 6 楼 zuoshu 2012-04-21   cs3230524 写道楼主,你所述的方法根本不能用于生成中文声学模型,得用CMUCLMTK自己做。。。不知道你是怎么成功的。。。
是无法生成声学文件,声学文件用的还是默认的,改变的是语言模型和字典,缩小搜索范围达到提高识别率的目的 7 楼 cs3230524 2012-04-21   zuoshu 写道cs3230524 写道楼主,你所述的方法根本不能用于生成中文声学模型,得用CMUCLMTK自己做。。。不知道你是怎么成功的。。。
是无法生成声学文件,声学文件用的还是默认的,改变的是语言模型和字典,缩小搜索范围达到提高识别率的目的

用lmtool在线生成语言模型无法应用于中文。

log file:
WARN> cannot access hand-tuned dictionary file: ./8563.hdict // 8563.hdict
I think this is a non-word: 不倒翁
pronounce: verbosity is 1
I think this is a non-word: 东西
I think this is a non-word: 苹果
I think this is a non-word: 显示器
I think this is a non-word: 一年

8 楼 ganfei1983 2012-05-23   HI zuoshu  我留下我QQ  704977332  我想和你交流一下  可以吗? 多谢 9 楼 rtygbwwwerr 2012-05-31   楼主,这个字典文件你自己用过吗? 10 楼 rtygbwwwerr 2012-05-31   1929.dic 这个文件里边 每个中文对应的值都是:EH S EH S   ,是不是有问题? 11 楼 rtygbwwwerr 2012-05-31   用楼主的方法和字典文件试了下,没成功,一个字都不能识别。。。。。。 12 楼 272426068 2012-06-04   如果没有装NDK和下载https://nodeload.github.com/cjac/cmusphinx/zipball/trunk
这个是不是运行不了DEMO?