失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 树莓派文字转语音 python_树莓派的语音识别

树莓派文字转语音 python_树莓派的语音识别

时间:2023-09-29 15:10:08

相关推荐

树莓派文字转语音 python_树莓派的语音识别

树莓派的语音识别

1. 安装linux下的声音库

sudo apt-get install alsa-base

sudo apt-get install alsa-utils

sudo apt-get install libasound2-dev

可能遇到的问题:

E: Unable to locate package alsa-base

解决:更换系统的源

cd /etc/apt/

cp sources.list sources.list.bak

sudo apt-get install vim

sudo vim source.list

...中科大的软件源

deb http://mirrors./raspbian/raspbian/ stretch main contrib non-free rpi

...

sudo apt-get update # 更新源

sudo apt-get -f install #修复损坏的软件包

sudo apt-get upgrade #更新软件

换源可能出现的问题:

Err:1 /ubuntu xenial InRelease

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

解决:

sudo gpg --keyserver --recv 3B4FE6ACC0B21F32 //(这个公钥根据提示来写的)

sudo gpg --export --armor 3B4FE6ACC0B21F32 | sudo apt-key add -

sudo apt-get update

输入alsamixer

2.声音的输入和输出

将usb声卡作为默认的声卡:

cd

vim .asoundrc

... 内容如下

pcm. !default sysdefault:Device

...

声音的输出: 挑选一个wav格式的音乐: 可以在这个网站下载示例 /

sudo aplay loveme.wav #开始播放音乐

声音输入:

sudo arecord -D hw:1,0 -c1 -r16000 -fS16_LE test.wav #对着话筒说话进行录制

参数说明:

-h,—help(帮助)

-V,–version(打印版本信息)

-l,–list-devices(列出全部声卡和数字音频设备)

-L,–list-pcms(列出全部PCM定义)

-D,–device(指定PCM设备名称)

-q,–quiet(安静模式)

-t,–file-type(文件类型voc,wav,raw或au)

-c,–channels(设置通道数)

-f,–format(设置格式)

-r,–rate(设置频率)

-d,–duration(设置持续时间,单位为秒)

-s,–sleep-min(设置最小休眠时间)

-M,–mmap(mmap流)

-N,–nonblock(设置为非块模式)

-B,–buffer-time(缓冲持续时长,单位为微秒)

-v,–verbose(显示PCM结构和设置)

-I,–separate-channels(设置为每个通道一个单独文件)

3. 语音识别

采用开源库: PocketShinx

下载安装:

#下载

wget /projects/cmusphinx/files/sphinxbase/5prealpha/sphinxbase-5prealpha.tar.gz/download -O sphinxbase.tar.gz

wget /projects/cmusphinx/files/pocketsphinx/5prealpha/pocketsphinx-5prealpha.tar.gz/download -O pocketsphinx.tar.gz

# 解压

tar -xzvf sphinxbase.tar.gz

tar -xzvf pocketsphinx.tar.gz

# 安装依赖

sudo apt-get install bison libasound2-dev swig

#先安装sphinxbase

cd sphinxbase-5prealpha

sudo ./configure --enable-fixed

sudo make

sudo make install

#安装pocketsphinx

cd pocketsphinx-5prealpha

sudo ./configure

sudo make

sudo make install

#让系统知道PocketPhinx库文件的位置

sudo vim /etc/ld.so.conf

...追加一行

/usr/local/lib

...

# 进入pocketPhinx下的src/programs

./pocketsphinx_continuous -inmic yes #这样就可以对着话筒说了,语音识别完成

4. 提高识别精度

通过上述的开源库,测试发现十分的不准确,提高准确率的方法有两种,一种是通过训练模型,过程很复杂,另一种是通过制定一些关键字进行范围限定.下面是第二种方法的操作步骤

创建字典

vim keyword.txt

...

up

down

left

right

light

hello

...

生成程序识别的文件:访问http://www.speech.cs.cmu.edu/tools

将字典文件上传,生成指定的.tgz压缩文件,点击下载

./pocketsphinx_continuous -lm 3253.lm -dict 3253.dic -inmic yes

发现识别精度直线上升

5.理解语音并发起动作

动作可以多种多样,他可以是触发一个脚本,可以是回复一句话,下面的实例,做一个简单回应,当我说出hello, 他回复im okay,这样的功能

让程序说话: 文本转语音: TTS(TextToSpeach)

sudo apt-get install espeak

修改pocketPhinx的程序

cp continuous.c continuous.c.bak # 做好备份

...修改如下

if (!in_speech && utt_started) {

/* speech -> silence transition, time to start new utterance */

ps_end_utt(ps);

hyp = ps_get_hyp(ps, NULL );

if (hyp != NULL) {

printf("开始识别了昂....");

if(strcmp(hyp,"HELLO")==0){

system("sudo espeak \"im okay\"");

}

printf("%s\n ", hyp);

fflush(stdout);

}

if (ps_start_utt(ps) < 0)

E_FATAL("Failed to start utterance\n");

utt_started = FALSE;

E_INFO("Ready....\n");

}

sudo make # 重新编译

./pocketsphinx_continuous -lm 3253.lm -dict 3253.dic -inmic yes

如果觉得《树莓派文字转语音 python_树莓派的语音识别》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。