学会休眠和语音唤醒
这里我以pocketsphinx实现语音唤醒为例子: 1.环境配置:
- pip install pocketsphinx
- pip install pyaudio
复制代码进行本地离线安装。 比如:我在window上python3.7 进行离线安装pocketsphinx,这里要注意文件的路径,否则会报错找不到指定文件 - pip install pocketsphinx-0.1.15-cp37-cp37m-win_amd64.whl
复制代码 2.如何定制训练自己的唤醒词:建立一个名为keyword的文件,里面输入你想要的唤醒词,以及读音相近的词(相似读音的词越多灵敏度越高),比如:我想训练的终端名为 COCO,则我的keyword内容为: - gogo
- coco
- yoyo
- bobo
- lolo
- momo
- nono
- hoho
复制代码
选择 keyword.txt 进行上传,得到对应的压缩包,下载后放到项目文件夹下,并解压得:
这里的数字都是网站随机生成的,不一样是正常的。 测试代码: - import os
- from pocketsphinx import LiveSpeech, get_model_path
-
- def wakeup_co():
- 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('.\\Sphinx_keyword\\keyword_COCO\\', '5995.lm'),
- dic=os.path.join('.\\Sphinx_keyword\\keyword_COCO\\', '5995.dic')
- )
- for phrase in speech:
- #print("phrase:", phrase)
- #print(phrase.segments(detailed=True))
- if str(phrase) in ["GOGO", "COCO", "YOYO",
- "BOBO", "LOLO", "MOMO",
- "NONO", "HOHO"]:
- print('我是COCO')
复制代码这里 '.\\Sphinx_keyword\\keyword_COCO\\' 是我存放文件的地址,5995 也需要根据你的文件来更改,需要根据你的地址来更改。 测试结果: - Allocating 32 buffers of 2500 samples each
- 我是COCO
-
- 进程已结束,退出代码为 0
复制代码若想使用中文词作为唤醒词,则需要下载好相关的中文文件: Download CMU Sphinx from SourceForge.net 下载后放到项目文件夹中解压,得:cmusphinx-zh-cn-5.2 文件夹
和训练英文唤醒词一样,需要建立 keyword.txt 文件,我训练了一个名为“佩佩”的唤醒词:
- 贝贝
- 佩佩
- 蕾蕾
- 内内
- 嘿嘿
- 忒忒
- 得得
- 贼贼
- 尅尅
复制代码 打开网站:Sphinx Knowledge Base Tool VERSION 3 上传keyword.txt后得到一个压缩包,下载后放到项目路径下并解压。
这里需要更改 dic 为后缀的文件内容,需要在中文后面按格式添加上拼音和声调,所有间隔均为一个空格,修改后,例如: - 佩佩 p ei4 p ei3
- 内内 n ei4 n ei3
- 嘿嘿 h ei4 h ei3
- 尅尅 k ei4 k ei3
- 得得 d ei4 d ei3
- 忒忒 t ei4 t ei3
- 蕾蕾 l ei4 l ei3
- 贝贝 b ei4 b ei3
- 贼贼 z ei4 z ei3
复制代码测试代码:
- import os
- from pocketsphinx import LiveSpeech, get_model_path
-
- model_path = '.\\Sphinx_keyword\\cmusphinx-zh-cn-5.2\\'
-
- speech = LiveSpeech(
- verbose=False,
- sampling_rate=16000,
- buffer_size=2048,
- no_search=False,
- full_utt=False,
- hmm=os.path.join(model_path ,'zh_cn.cd_cont_5000'),
- lm=os.path.join('.\\Sphinx_keyword\\keyword_PeiPei\\', '0738.lm'),
- dic=os.path.join('.\\Sphinx_keyword\\keyword_PeiPei\\', '0738.dic')
- )
- for phrase in speech:
- print("phrase:", phrase)
- print(phrase.segments(detailed=True))
- if str(phrase) in ["贝贝", "佩佩", "蕾蕾",
- "内内", "嘿嘿", "忒忒",
- "得得", "贼贼", "尅尅",]:
- print("我是佩佩")
复制代码- Allocating 32 buffers of 2500 samples each
- phrase: 尅尅
- [('<s>', 0, 4359242, 4359325), ('<sil>', -1331, 4359326, 4359479), ('<sil>', -1331, 4359480, 4359801), ('<sil>', -1331, 4359802, 4359940), ('尅尅', 0, 4359941, 4360080)]
- 我是佩佩
- phrase: 得得
- [('<s>', 0, 8516377, 8516528), ('<sil>', -5375, 8516529, 8516683), ('<sil>', -2035, 8516684, 8516764), ('得得', 0, 8516765, 8516968), ('</s>', 0, 8516969, 8516980)]
- 我是佩佩
- phrase: 嘿嘿
- [('<s>', 0, 10674834, 10675304), ('嘿嘿', -3628, 10675305, 10675382), ('</s>', 0, 10675383, 10675385)]
- 我是佩佩
复制代码
|