Android应用离线中文语音识别PocketSphinx (免费哦~)

该文章重点在中文语音识别的应用上

目录

前言

一、不太推荐的知名demo

1.官方demo PocketSphinx 

(https://github.com/cmusphinx/pocketsphinx-android-demo)

2.crystalyf大神的demo

(Android PocketSphinx离线语音识别集成总结_Crystal_xing的博客-CSDN博客_pocketsphinx 识别率)

二、推荐的demo

1. eson-yunfei的demo

(GitHub - eson-yunfei/PocketSphinxDemo: PocketSphinx的Android版本使用示例)

2.编辑词条

3.代码使用:

4. 效果示范:

总结


前言

       鉴于抠门老板的突发奇想,想试试能不能加语音控制功能但不花钱,想着买电子硬件、做模具花了钱,软件能不花钱就不花钱。于是我一直百度搜索语音识别功能,语音龙头的科大讯飞需要收费,苦苦寻找怎么找个demo应付老板,一个上午之际最后找到神奇的PocketSphinx 。

一、不太推荐的知名demo

1.官方demo PocketSphinx 

(https://github.com/cmusphinx/pocketsphinx-android-demo)

      不推荐理由:我们的目的是普通话的识别,可惜官方Android的demo有个弊端,用中文做关键字会报错闪退,大概理由是中文比英文多字节。

        有能力可以自己下载源码,然后修改字节数,重新编译。

2.crystalyf大神的demo

Android PocketSphinx离线语音识别集成总结_Crystal_xing的博客-CSDN博客_pocketsphinx 识别率

      不推荐理由:该demo下载下来,可以在手机运行,普通话可以识别。但由于Android版本的问题,so文件导入到自己的项目会报错,targetSdk必须是23以下,解决办法降低版本或重新编译源码

        (十分感谢这位大神的博客文章,资料详尽,让我知道有这个库可以用)。

二、推荐的demo

1. eson-yunfei的demo

(GitHub - eson-yunfei/PocketSphinxDemo: PocketSphinx的Android版本使用示例)

        感谢这位大神,让我看到曙光,经过试验可以在Android高版本运行,只需把对应文件和代码,放在自己的项目里,如下图我的项目

Android应用离线中文语音识别PocketSphinx (免费哦~)_第1张图片

其中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

        按照本来格式,再对照上一步下载的文件里的拼音对比,如我的项目里

Android应用离线中文语音识别PocketSphinx (免费哦~)_第2张图片​ Android应用离线中文语音识别PocketSphinx (免费哦~)_第3张图片

3.代码使用:

        调用 PocketSphinxUtil类的startRecord()开始语音,stopRecord结束,在结束后接口返回字符串数组

4. 效果示范:

当我说出“你好,张三” 结束后有返回值


总结

       该离线语音识别,经测试,不太准,人多时候,识别其他词。

        但免费,而且集成度高,使用难度低,又能中英识别,还要啥自行车呢。

        想普通话中文识别,可用该文的方法,只需要英文,还是官方最新版本最好。

        肯花钱建议用主流的讯飞或百度的服务之类,才是王道。
 

你可能感兴趣的:(Android,android)