该文章重点在中文语音识别的应用上
目录
前言
一、不太推荐的知名demo
1.官方demo PocketSphinx
(https://github.com/cmusphinx/pocketsphinx-android-demo)
2.crystalyf大神的demo
(Android PocketSphinx离线语音识别集成总结_Crystal_xingpocketsphinx 识别率)
二、推荐的demo
1. eson-yunfei的demo
(GitHub - eson-yunfei/PocketSphinxDemo: PocketSphinx的Android版本使用示例)
2.编辑词条
3.代码使用:
4. 效果示范:
总结
前言
PocketSphinx
一、不太推荐的知名demo
1.官方demo PocketSphinx
(https://github.com/cmusphinx/pocketsphinx-android-demo)
不推荐理由:我们的目的是普通话的识别,可惜官方Android的demo有个弊端,用中文做关键字会报错闪退,大概理由是中文比英文多字节。
有能力可以自己下载源码,然后修改字节数,重新编译。
2.crystalyf大神的demo
(Android PocketSphinx离线语音识别集成总结_Crystal_xing的博客
不推荐理由:该demo下载下来,可以在手机运行,普通话可以识别。但由于Android版本的问题,so文件导入到自己的项目会报错,targetSdk必须是23以下,解决办法降低版本或重新编译源码
(十分感谢这位大神的博客文章,资料详尽,让我知道有这个库可以用)。
二、推荐的demo
1. eson-yunfei的demo
(GitHub - eson-yunfei/PocketSphinxDemo: PocketSphinx的Android版本使用示例)
感谢这位大神,让我看到曙光,经过试验可以在Android高版本运行,只需把对应文件和代码,放在自己的项目里,如下图我的项目
其中build.gradle记得加上jni的导入:
defaultConfig {
.....
ndk {
abiFilters "armeabi", "armeabi-v7a"
}
}
dependencies {
.......
implementation(fileTree(dir: 'libs', include: ['*.jar']))
implementation files('libs/pocketsphinx-android-5prealpha-nolib.jar')
}
ant.importBuild 'assets.xml'
preBuild.dependsOn(list, checksum)
clean.dependsOn(clean_assets)
2.编辑词条
编辑词条的方法具体可以参考https://www.jianshu.com/p/4310ae932fdd
1.下载普通话的发音表(注意该demo使用是不带音标的版本,即旧版本)
下载 CMU Sphinx - Browse /Acoustic and Language Models/Archive/Mandarin at SourceForge.net
的zh_broadcastnews_utf8.dic
2.更改已移植的自己项目中的词条文件
改动voice.dic和zh_test.gram
按照本来格式,再对照上一步下载的文件里的拼音对比,如我的项目里
3.代码使用:
调用 PocketSphinxUtil类的startRecord()开始语音,stopRecord结束,在结束后接口返回字符串数组
4. 效果示范:
当我说出“你好,张三” 结束后有返回值
总结
该离线语音识别,经测试,不太准,人多时候,识别其他词。
但免费,而且集成度高,使用难度低,又能中英识别,还要啥自行车呢。
想普通话中文识别,可用该文的方法,只需要英文,还是官方最新版本最好。
肯花钱建议用主流的讯飞或百度的服务之类,才是王道。