使用pocketsphinx模块,实现唤醒词功能。

运行环境:

win10 + Python3.6.2

安装模块包:

> pip install pocketsphinx

C:\Users\qpf10>pip install pocketsphinx

Collecting pocketsphinx

Downloading https://files.pythonhosted.org/packages/52/53/30b12c3e4de918e32e73e9d635b4c9e1765512acc94ad0b51bfe960b54c9/pocketsphinx-0.1.15-cp36-cp36m-win_amd64.whl (29.1MB)

100% |████████████████████████████████| 29.1MB 104kB/s

Installing collected packages: pocketsphinx

Successfully installed pocketsphinx-0.1.15

pypi官方简介:

Pocketsphinx是CMU Sphinx语音识别开源工具包的一部分。

这个包为使用SWIG和Setuptools创建的CMU Sphinxbase和Pocketsphinx库提供了一个python接口。

一、运行官方自带案例-LiveSpeech

原文:It‘s an iterator class for continuous recognition or keyword search from a microphone.

有道翻译:它是一个迭代器类,用于从麦克风连续识别或关键字搜索。

在pycharm中运行代码,完美运行。

import os

from pocketsphinx import LiveSpeech, get_model_path

model_path = get_model_path()

speech = LiveSpeech(

verbose=False,

sampling_rate=16000,

buffer_size=2048,

no_search=False,

full_utt=False,

hmm=os.path.join(model_path, ‘en-us‘),

lm=os.path.join(model_path, ‘en-us.lm.bin‘),

dic=os.path.join(model_path, ‘cmudict-en-us.dict‘)

)

for phrase in speech:

print("phrase:", phrase)

print(phrase.segments(detailed=True))

运行后,我说了两句(发音不标准),一句hello,一句hello word,显示结果:感觉识别的很有问题。。。虽说不标准,但是不至于这个情况。

Allocating 32 buffers of 2500 samples each

phrase: i‘m

[(‘‘, -7, 37837, 37890), (‘‘, -6, 37891, 38010), ("i‘m(2)", -913, 38011, 38064), (‘[SPEECH]‘, -6069, 38065, 38070), (‘‘, 0, 38071, 38078)]

phrase: hello or earth

[(‘‘, -5, 186767, 186778), (‘hello‘, -9386, 186779, 186834), (‘or‘, -3672, 186835, 186854), (‘earth‘, -1192, 186855, 186904), (‘‘, 0, 186905, 186907)]

二、运行中文语言模型内容

添加中文语言模型和中文声学模型

中文相关文件下载地址:

https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/

> 1. 声学模型:zh_broadcastnews_16k_ptm256_8000.tar.bz2

> 2. 语言模型:zh_broadcastnews_64000_utf8.DMP

> 3. 拼音字典:zh_broadcastnews_utf8.dic

拷贝到model文件夹下:

> 将文件放到PHTHON_HOME的pocketsphinx模块包下,我这里是在C:\Python36\Lib\site-packages\pocketsphinx\model

放代码:没有变化,只是加载的目录文件变了。

import os

from pocketsphinx import LiveSpeech, get_model_path

model_path = get_model_path()

speech = LiveSpeech(

verbose=False,

sampling_rate=16000,

buffer_size=2048,

no_search=False,

full_utt=False,

hmm=os.path.join(model_path, ‘zh/zh_broadcastnews_16k_ptm256_8000‘),

lm=os.path.join(model_path, ‘zh/zh_broadcastnews_64000_utf8.DMP‘),

dic=os.path.join(model_path, ‘zh/zh_broadcastnews_utf8.dic‘)

)

for phrase in speech:

print("phrase:", phrase)

print(phrase.segments(detailed=True))

运行后的结果,还是非常的不准确。虽说带点东北口音,但是识别的还是挺差的。。。说的,你好,你好吗,滚。还说了挺多其他的,都没有很好的效果,就不贴了。

运行后,半天才反应过来开始识别,不知道是什么原因,刚开始我还以为是程序监听不到语音呢。

Allocating 32 buffers of 2500 samples each

phrase: 尼 尔 奥

[(‘‘, 2, 2645708, 2645714), (‘尼‘, -357, 2645715, 2645771), (‘尔(2)‘, -2, 2645772, 2645811), (‘奥‘, -42088, 2645812, 2645853), (‘‘, 0, 2645854, 2645857)]

phrase: 尼 尔 欧盟

[(‘‘, -2, 2828757, 2828765), (‘尼‘, -11911, 2828766, 2828782), (‘尔(2)‘, -2519, 2828783, 2828837), (‘欧盟‘, 0, 2828838, 2828868), (‘‘, 0, 2828869, 2828872)]

phrase: 不同

[(‘‘, 1, 3023056, 3023061), (‘不同‘, -18424, 3023062, 3023128), (‘‘, 0, 3023129, 3023133)]

还会出现如下这种空的情况- -!:

phrase:

[(‘‘, -4, 6295811, 6295819), (‘++incomplete++‘, 0, 6295820, 6295973), (‘‘, 0, 6295974, 6296015)]

三、运行自定义的中文语言模型内容

这里有个前提:我只把pocketsphinx当做唤醒词来使用。

具体操作步骤

编辑一个自定义的keyword.txt文本,里面写入打算唤醒的中文词语,和发音可能混淆的词(如果拼音相同只记录一个就行)。再添加一些其他的乱七八糟的词,这样匹配的时候就不会一直匹配唤醒词了。(唤醒词的重点)

以小贝为例,则keyword.txt中的内容如下:

小贝

小魏

巧倍

呵呵

哈哈

么么哒

在[http://www.speech.cs.cmu.edu/tools/lmtool-new.html] 上面训练上一步的keyword文本。会生成“随机数.lm”和“随机数.dic”,下载这两个文件就可以。用来替代语言模型和拼音字典。

如:

1234.lm

1234.dic

编辑下载的随机数.dic文件,对照着zh_broadcastnews_utf8.dic的拼音字典,更改成与其同样格式的内容。原字典中不一定会有相同的词语,有的话,就按照原先的写,没有的话,就按照单个发音的写上就可以。

例如:

小贝 x i ao b ei

小魏 x i ao w ei

巧倍 q i ao b ei

啊 a as

.

.

.

在代码中,替换掉对应的lm和dic路径。

import os

from pocketsphinx import LiveSpeech, get_model_path

model_path = get_model_path()

speech = LiveSpeech(

verbose=False,

sampling_rate=16000,

buffer_size=2048,

no_search=False,

full_utt=False,

hmm=os.path.join(model_path, ‘zh/zh_broadcastnews_16k_ptm256_8000‘),

lm=os.path.join(model_path, ‘zh/1234.lm‘), # 这个目录位置自己设置

dic=os.path.join(model_path, ‘zh/1234.dic‘) # 同上

)

for phrase in speech:

print("phrase:", phrase)

print(phrase.segments(detailed=True))

# 只要命中上述关键词的内容,都算对

if str(phrase) in ["小贝", "小魏", "巧倍"]:

print("正确识别唤醒词")

原文:http://blog.51cto.com/feature09/2300352

python语音唤醒功能_python语音唤醒-pocketsphinx相关推荐

  1. python 语音播报库_python 语音库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我需要自动分离两位发言者的声音. 我刚开始学习语音识别,我看了python的wa ...

  2. android 语音留言功能,iPhone语音留言怎么开通 苹果iOS9.2语音信箱设置教程

    目前移动版iPhone用户更新到iOS9.2后,会发现一个新功能语音信箱.怎么开通语音信箱功能呢?怎么设置语音信箱呢?下面99安卓网小编就分享iOS9.2苹果iPhone设置语音信箱功能,供参考. 目 ...

  3. python解释器的功能_python的解释器是什么?

    python解释器是解释python脚本执行的程序.编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执行.py文件. python解释器种 ...

  4. python实现登录功能_python实现用户登录功能模块

    python实现登录功能模块#!/usr/bin/env python while True: user = raw_input('Please input username:') if user = ...

  5. [转载] python字典查询功能_Python中的字典功能

    参考链接: Python中的字典dictionary方法 (cmp(), len(), items()-) python字典查询功能 Let's check out some important fu ...

  6. python实现计算器功能_python实现计算器功能

    本文实例为大家分享了python计算器的具体代码,供大家参考,具体内容如下 主要用到的工具是Python中的Tkinter库 比较简单 直接上图形界面和代码 引用Tkinter库 from tkint ...

  7. python离线语音唤醒算法_python语音唤醒-pocketsphinx

    使用pocketsphinx模块,实现唤醒词功能. 运行环境: win10 + Python3.6.2 安装模块包: > pip install pocketsphinx C:\Users\qp ...

  8. python语音命名规则_python语音变量命名规则

    在C语言中,有明确的变量命名规则: 1只能由字母,数字和下划线组成: 2,第一个字符必须是英文字母: 3.有效长度为255个字符: 4.不能包含标点符号和类型说明符(%,&,!, ,@,$): ...

  9. 短信截取 android,谷歌Android增加语音操作功能 可语音发送短信

    [赛迪网讯]8月13日消息,谷歌发布Android操作系统的语音指令功能"Voice Actions for Android"并且在博客中发布了一个解释这些功能的视频.Androi ...

最新文章

  1. python双下划线用法详解
  2. android ListView包含Checkbox滑动时状态改变
  3. mysql 备份锁表_mysql 不停机 短时间锁表 备份 主备同步 新增备份机器
  4. 2017年CISCN初赛
  5. 【转】运输层TCP协议详细介绍
  6. java6集合编程题
  7. db2 oracle mysql sqlserver_mysql、sqlserver、db2、oracle、hsql数据库获取数据库连接方法及分页函数...
  8. 织梦栏目mysql调用_织梦dedecms栏目调用标签,包括SQL语句调用方法
  9. 一个跨平台的 C++ 内存泄漏检测器
  10. JavaScript通用库(转)
  11. 基于C#的学生选课管理系统
  12. CUDA+CUDNN下载地址
  13. 初中计算机课使用的软件,初中信息技术课软件.doc
  14. mpvue(3)主页面搭建
  15. 详解量子计算:相位反冲与相位反转
  16. 手动关联endnote20和wps
  17. 【Android 数据业务解析】APN参数创建
  18. python源程序扩展名有那两种_Python源程序的扩展名是:
  19. 政府移动信息化解决方案
  20. LuLu UI表单验证

热门文章

  1. 沈航组成原理作业——1
  2. icp增值电信业务许可证办理条件及流程介绍
  3. 使用Git克隆vue-element-admin项目报错的解决方案
  4. 2020.10.22--AI--立体图形制作、矛盾空间图形设计、3D文字
  5. 中国象棋的人机博弈程序
  6. 【算法学习】快包算法
  7. C1模拟试卷的一个算法题
  8. 超火的口红机源码分享
  9. 虚拟机安装CentOS7教程
  10. LINUX MMC 子系统分析之五 MMC driver模块分析