pocketsphinx 模型库_pocketSphinx 嵌入式关键词唤醒
pocketSphinx 在hi3516A上关键词唤醒
(版本为最新在github下载的代码,2017.7)
编译安装sphinxbase
根据README文档,先运行./autogen.sh
问题1:
缺少安装包bison,按照提示,安装bison即可
问题2:
提示cannot find input file:test/unit/test_ad/Makefile.in
去对应文件夹下,有Makefile.am存在,可能是命名的问题,写一个shell脚本复制一下,
#!/bin/bash
for x in test/unit/test_*
do cp $x/Makefile.am $x/Makefile.in; done
同样的错误,同样的解决方案,然后再执行,
提示:now type make to compile the packet
执行make
提示makefile :1:*** missing separator, stop
转到对应文件夹下(具体看输出信息):
找到Make file文件
if USE_LAPACK
maybe_lapack = XXXX
endif
if USE_THREADS
maybe_threads = XXXXX
endif
.....
一般提示missing separator是因为makefile不能将四个空格识别为Tab键,但是有些文本编辑器却这么写,
可以使用cat -v -t -e Makefile查看,’^I‘是Tab键
最终坚决方案如下:
ifenq ($(USE_LAPACK),)
maybe_lapack = XXX
endif
下面的if同样的处理
继续:
没有make all 的规则,去你妈的,这是github上的代码吗?果断去sourceforge去下载,
./autogen.sh
缺少,swig,安装重试,没问题
./configure
make
make check
make install
安装pocketSphinx
如果遇到relink的错误,好好看看readme,确保pocketSphinx依赖的库存在或者查看是否sphinxbase安装正确成功。
同样,按照readme的操作,
autogen.sh
./configure
make clean
make check
sudo make install
在这个过程中,**注意环境变量**,可以在etc/profile中配置如下
export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
出现debug相关的报错,直接删除debug相关的代码,虽然有点费时间,但是我在相关代码里不会改,无从下手,然后就没有问题了
安装好后,就可以测试是否成功,
pocketsphinx_continuous -inmic yes
在我电脑上测试时候,会出现open device (/dev/dsp)(no such file or dir)的问题,但是我的麦克风在/dev/snd下,他是通过配置文件读出来的,这里我就跳过了,啦啦啦,测试一下语音文件的好了。
pocketsphinx_continuous -infile
可以运行,也会输出对应的结果,(file.wav的格式为16000采样率,16bit单声道pcm的编码格式)(格式不对会提醒报错)这里使用的是默认的英文的模型,在model/en-us/en-us下
也可以自己训练模型,使用自己的模型用一下的参数
pocketsphinx_continuous -hmm (your hmm dir) -lm (your language model) -dict (your dication) -inmic yes/-infile file.wav
到此为止,基本上在本机可以运行pocketsphinx,下一步就是将其移植到arm开发板上
移植pocketsphinx
先用交叉编译链编译sphinxbase
./autogen.sh(用于创建./configue文件)
./configure (这里需要自定义而不是使用默认的)
--prefix=/your/lib/home (库文件的安装位置,不使用默认目录,是为了避免与pc安装冲突)
--exec-prefix=/your/bin/home (可执行文件的库位置)
--host=x86_64-unknown-linux-gnu (主机类型,先随便写一个,在检查时候如果不对会提示,查找检查的输出信息,有这个)
--target=arm (目标平台)
CC=arm-hisiv400-linux-gcc
CFLAGS="-L/opt/hisi-linux/x86-arm/arm-hisiv400-linux/lib"
CPPFLAGS="-I/opt/hisi-linux/x86-arm/arm-hisiv400-linux/include"
--without-python (因为带上python库跑的时候会有奇奇怪怪的问题,索性屏蔽掉)
//还有其他可以取消依赖的库,具体可以查看./configure --help
make
sudo make install
问题解决:
configure: error:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
============================================================================
ERROR!
You probably have to install the development version of the Python package
for your distribution. The exact name of this package varies among them.
解决办法:一般可以通过sudo apt-get install python-dev解决
还有一种办法:sudo apt-get install libatlas-dev
我试了很多类似的pythonXX-dev都不行,只能使用–without-python取消python库的依赖
root:(yourpc name)#这是超级用户,但是有颜色)
然后执行,就没问题了,鬼畜
(详细可以查看man sudo)
“sphinx_fe.o : In function dectect sphinx mfc ….” 没有定义_ISO99_sscanf_
遇到这个问题是因为我交叉编译链是arm-hisiv300-linux,v300的是基于uclibc的库,这个库和v400以来的glibc库相比比较精简,所以会少这些东西,换成v400的交叉编译链就好了
同样的步骤,交叉编译pocketsphinx,命令也是一样
这时候就可以去你的目录下寻找你的bin(可执行二进制文件) lib(库) shared(里面有默认的模型,还有其他东东,没有搞清楚) include(调用pocketsphinx时候头文件)
运行pockesphinx
将之前配置的产生lib和bin的文件夹挂载到板子下,
将bin的文件夹路径加入PATH环境变量中
将lib的路径加入LD_LIBRARY_PATH环境变量中
先运行
pocketsphinx_continuous -infile test.wav
由于使用默认的英文模型,而且编译时候使用了--without-python,不能正常识别,会报错
(默认的英文模型是连续模型,所以不行,只能用带ptm的模型)
在官网下载一个带ptm的声学模型https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/US%20English/
pocketsphinx_continous -hmm /home/XXX/cmusphinx-en-us-ptm-5.2/ -infile test.wav
再次运行,在运行过程中会被系统killed,究其原因,应该是lm太大了,使用系统自带的en-us-phone.lm就可以
pocketsphinx_continous -hmm /home/XXX/en-us-phine.lm -infile test.wav
也可以使用-dict指定对于的字典,这时,应该就可以在hi3516上运行了,然而却不能识别出结果,这里就是语言模型,字典,和声学模型的锅了,垃圾的一匹
按理,hi3516A有64M内存,不应该运行不了,可能是需要配置一下板子的单个程序运行上限,这里只是个人猜测。
可以通过命令行运行识别,也可以通过程序运行
交叉编译语言识别程序:
之前交叉编译得到lib库,include库放在交叉编译链的搜索目录下
(执行arm-hisiv400-linux-gcc --print-search-dirs得到具体目录)
arm-hisiv400-linux-gcc hello.c -o hello -I/your/include/dirs -L/your/lib/dirs -lpocketsphinx -lsphinxad -lsphinxbase -lm(注意4个库的顺序哦,不一样也会报错)
含义解释:-I/your/include/dirs 指定头文件搜索路径,应该不用,如果将include的库放在交叉编译链的搜索路径下
-L/your/lib/dirs指定库的搜索路径,同上
-lpocketsphinx -lsphinxad -lsphinxbase -lm 分别是指定链接 libpocketsphinx.a libsphinxad.a libsphinxbase.a 和 数学库,-lm在很多情况下都需要,应该实现方式和具体芯片ALU有关,所以每一个库实现方式不一样,这个必须有,不然无法链接
训练自带的声学模型,语言模型
声学模型,字典文件,语言模型的关系
声学模型是将语音-》音素的部分,
字典文件是音素到单词的映射关系,
语言模型是通过概率判断音素组合形成单词
这里步骤在这个博客里http://blog.csdn.net/zouxy09/article/details/7942784
这里只讲我的理解和我犯的错
模型后缀
作用描述
your_db.dic
语言字典,从单词到音素 比如HELLO HH AH L OW
your_db.phone
音素集合文件,包含所有的音素,还需要加上SIL静音音素
your_lm.DMP/.bin/.lm
语言模型,在其他地方得到,
your_db.filler
其他噪音,主要列举非语音单词,背景噪音啊什么的
your_train.fileids
训练文件列表,指明训练的语言文件的路径
your_db_train.transcription
训练文本对应文件,hello world (file1)
your_test.fileids
文件格式类似train,用于测试
your_db_test.transcription
文件对应表,用于测试
注意事项:
在your_db_train.transcription文件中,
关于性能方面
用pocketsphinx在hi3516A上运行,使用自己训练的模型,识别4句话,准确率一般,单次识别需要2s左右,
3516A是A9 的核,600M的主频,感觉还是挺费时间的,
具体在程序查点得到,前期加载模块需要0.6s,识别需要1.2s左右,目前在考虑如何运行更加迅速
time ./test可以看到运行时间
pocketsphinx 模型库_pocketSphinx 嵌入式关键词唤醒相关推荐
- pocketsphinx 模型库_PocketSphinx声学模型的训练与使用
声学模型主要用于计算语音特征和每个发音模板之间的似然度.目的是为每个声学单元建立一套模型参数(通过不断地学习和改进得到最优的,也就是概率最大的一组HMM模型参数). 需要训练的情况: 1)需要创建一个 ...
- pocketsphinx 模型库_[转] PocketSphinx语音识别系统声学模型的训练与使用
PocketSphinx语音识别系统声学模型的训练与使用 声学模型主要用于计算语音特征和每个发音模板之间的似然度.目的是为每个声学单元建立一套模型参数(通过不断地学习和改进得到最优的,也就是概率最大的 ...
- 嵌入式还有哪些风口值得入?
大家好,我是写代码的篮球球痴 前两天发了篇文章说到嵌入式薪资的,很多人想知道目前有哪些不错的行业可以加入,这篇文章罗列了很多风口行业. 我相信,半导体芯片会是很重要的方向,但是不管路修得多好,都需要汽 ...
- C语言制作的讯飞语音合成、识别、唤醒标准调用接口DLL
一 .导出函数: LIBRARY "XF_MSC" EXPORTS addxy @1 //测试用的两数和函数 mystrcat @2 ...
- 【语音识别招聘_最新热搜语音识别人才招聘信息】-前程无忧
学历要求:大专|工作经验:1年|公司性质:民营公司|公司规模:少于50人 职位信息 1.负责语音识别人工智能芯片推广与销售 2.负责客户的开拓.跟进及后期服务 3.负责市场信息的收集反馈及调研规划 4 ...
- 一文看懂人工智能语音芯片
来源:内容来自「九鼎投资」,作者:孟伟.冯卓 ,谢谢. 行业概况 行业简介 人工智能芯片(简称AI芯片)是指含有专门处理人工智能应用中大量计算任务模块的芯片,属于集成电路和人工智能的交叉领域.自20 ...
- 达摩院技术创新全景|懂你的语音AI
过去十年,语音AI从实验室走向应用,语音搜索.交互早已融入日常.本文将带你一览达摩院语音AI技术创新全景,一起感受能听.会说.懂你的语音AI. 当你在家中与智能音箱进行交互对话,当你使用天猫超市或菜鸟 ...
- 趋势前沿 | 达摩院语音 AI 最新技术大全
作者:陈谦.邓憧.付强.高志付.胡凯.罗浩能.纳跃跃.田彪.王雯.鄢志杰.张仕良.张庆林.郑斯奇(以姓氏首字母排序) 过去十年,语音 AI 从实验室走向应用,语音搜索.交互早已融入日常.本文将带你一览 ...
- 我用废旧的Android手机做了个机器人
码个蛋(codeegg) 第 986 次推文 作者:稚晖 链接:https://www.zhihu.com/people/zhi-hui-64-54 做...做成机器人? 比如像这样↓ 图片看不出来效 ...
最新文章
- 图片过渡效果一例 使用bitmapData操作
- php清空dns缓存文件,dns清空-windows刷新本地DNS缓存的几种方法
- Java黑皮书课后题第3章:**3.28(几何:两个矩形)编写一个程序,提示用户输入两个矩形中心的x坐标和y坐标以及矩形的宽度和高度,然后判断第二个矩形是在第一个矩形内,还是和第一个矩形重叠
- 【跃迁之路】【428天】程序员高效学习方法论探索系列(实验阶段185-2018.04.09)...
- 加投35000瓶原价茅台 天猫双11今晚8点开售
- 1.1.0-简介-P2-分布式系统的一些基本概念
- 【笔记】LR配置ODBC连接数据库进行参数化(mysql )未完待续
- 微服务架构:spring cloud之服务注册和服务发现
- iOS 一种连线题效果的实现
- 前端关系图谱插件_前端拓扑图插件选型对比
- linux(所有版本)下安装有道词典
- 实体消歧(链接到实体库)
- 选择FPGA,认识“她”。
- 机器人学习笔记——机器人概述
- 蓝鲸智云-腾讯给广大运维工作者的福利
- 训练自己的yolov5样本, 并部署到rv1126 <三>
- 【限时干货】数据圈火爆的数据产品文章全集
- npcap loopback adapter是什么意思_阜阳为什么叫阜阳,阜阳古时候叫什么,阜阳历史的由来...
- 使用React Native 和 微信小程序 编写的一款阅读类app ———《轻松一刻》
- 大数据智能交通信号灯 城市道路Easy Go