Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
[网络编程学习营]+_xiangxi+百度语音识别
发布于 2018-08-26 22:35:11 浏览:1537
订阅该版
* 本帖最后由 _xiangxi 于 2018-8-26 22:44 编辑 * 这个帖子是本次学习营的挑战项目--百度语音识别功能的使用。讲实话来说呢,这个部分,并不算是我独立完成的,是借鉴了@zppsky的帖子,嗯~~~也是整合吸收了的大佬的创意,只是做了一点点小的修改。本来是参考httpclient_sample.c的内容的,嗯~~~后来发现了@zppsky的帖子,[https://club.rt-thread.org/ask/question/7868.html](https://club.rt-thread.org/ask/question/7868.html) 本次实验室需要根据语音识别的结果来控制板子。嗯,板子上有两颗LED灯,之前的Onenet家居测试上也使用过,正好拿过来使用。本次的测试步骤,主要是分为六步。**第一步:通过百度语音的语音合成功能获取.mp3的语音**使用wget方法获取.mp3语音,在串口输入界面可以手工输入的方法获取语音,当然,也可以通过改写int webclient_get_file(const char* URI, const char* filename)来实现。嗯~我用得是笨方法,使用串口中的wget命令获取.mp3文件。```wget http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=24.9d36d483e92013887b1bc99d84db0fa0.2592000.1537014976.282335-11670509&tex=%e8%8f%9c%e9%b8%a1%e5%b0%b1%e8%a6%81%e5%a4%9a%e5%ad%a6%e4%b9%a0&vol=9&per=0&spd=5&pit=5&aue=3 caiji.mp3```当然,也可以通过修改aue=4的方法来直接获取.pcm文件,不过这个格式的文件并不是语音,在识别时候会出现困难。![QQ截图20180826213656.png](/uploads/201808/26/213720cezvsh0hsh55tvwt.png)attention:要确保```#define FINSH_CMD_SIZE 800```提供足够大的空间,否则会出现命令无法识别的情况,前一节已经说明。 **第二步:通过tftp_server功能从板子的文件系统中复制到电脑上**这一步利用在板子上已经构建好的文件系统为基础,利用tftp64.exe工具,实现文本的传输。在传输前,不要忘记启动tftp_server![QQ截图20180826214222.png](/uploads/201808/26/214249a61k6uk16jqv76b9.png)![QQ截图20180826214356.png](/uploads/201808/26/214410sbxgadwxhddxagbd.png)**第三步:使用ffmpeg把.mp3格式文件转为.pcm格式文件**转码工具可以使用ffmpeg,嗯~~除了这个,其他的还真的不好找。首先要下载[ffmpeg](https://ffmpeg.zeranoe.com/builds/),然后解压打开并在该页面启动ConEmu Here![无标题.png](/uploads/201808/26/215326as7shuy2i1uhnhnz.png)输入```ffmpeg -y -i xiangxi.mp3 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 xiangxi.pcm```![QQ截图20180826215516.png](/uploads/201808/26/215533fzy0pyyr7y7y71yc.png) **第四步:使用tftp_server功能传输.pcm格式文件到开发板上**仍然是通过tftp64.exe这个工具,把文件传输到开发板的文件系统上。![QQ截图20180826215804.png](/uploads/201808/26/215821pt0ppq11oo2p5ooo.png)使用put推送到开发板文件系统上。此时,文件系统上有需要全部.pcm文件用于接下来的语音识别测试。**第五步:编写(改写)voice_ctrl.c文件**呃,不要意思的说,这个部分的代码,是根据@zppsky大佬修改的,其实也没有修改什么内容。代码的主要框架并没有改写,只是修改了一些响应规则。[<原版传送门>](https://club.rt-thread.org/ask/question/7868.html)我使用这个文件时,出现了编码问题,就是编码合适不正确,报错的现象。![QQ截图20180826220244.png](/uploads/201808/26/220259pve3rr1jxnomxj03.png)作为偷懒的惩罚,我找了许多解决办法。嗯~~最靠谱的是,使用Notepad++的将voice_ctrl.c文件的编码格式重编码为UTF-8 BOM。不过,之后哪怕修改一个字符,或者是填一个空格也是会导致编译的失败。这是需要重复上面的操作。这个情况,和我当时上传中文数据流的情况是一样的,上传的数据流格式通过UTF-8编码,当时也是把整个文件编码为UTF-8格式。**第六步: 测试.pcm文件,查看识别效果,并配置语音识别库提高识别率**一些短的命令,如开灯,关灯的识别效果很不错,不过,其他的一些不具有通性标识的语音,比如:姓名,就不那么容易识别了。![QQ截图20180826220839.png](/uploads/201808/26/221025yizz4hwesob2t6lz.png)为了达到提高识别率的效果,需要配置语音识别库(对语音识别结果加权)![QQ截图20180826221212.png](/uploads/201808/26/221232v2rn9q9nyn2k4chs.png)按照说明文档的要求,添加自己常用的字符段![QQ截图20180826221419.png](/uploads/201808/26/221437gnon49umbpokuyi4.png)当然,这个训练需要时间,不会刚提交就生效。百度推荐一个小时以后,我就上传后等了一个多小时,然后再测试的这条.pcm的语音,实验结果还是很理想的。 嗯,本次的训练营的内容,基本是结束了。但是,对于我来说,还并没有结束。群里的大佬都太牛逼了,自己作为一只小萌新在其中瑟瑟发抖,通常的状态就是在群里窥屏,看大佬的发言来学习从来没有听说过的知识。当然,效果还是很明显的。虽然时常听不太明白,但是经过问度娘,问大佬的方法也开拓了眼界,学习了新方向。总之,本次的学习令我很受益,如果有机会能参加下次的培训项目,我会非常激动的。对于RT-Thread的理解,我也不断加深了。一开始只是以为,RT-Thread作为实时操作系统和FreeRTOS这样的并没有多大区别。(一开始选择学习,是因为这是一个国产的嵌入式实时操作系统)所以,一开始也是先学习内核的编程部分,有幸在观看完15天RT-Thread入门教程后得知了网络编程训练营的招募,也十分幸运得加入其中。现在对我的感觉,RT-Thread作为一个实时操作系统,除此外,还拥有丰富的组件,有着超乎寻常的源码更新速度。还有那么多大佬助阵。对于我这个菜鸡而言,得到的更多是震撼。学习了RT-Thread后,感觉自己之前的轮询式程序就像是裸奔,不堪回首。相信我再经过一年多的学习,可以在毕业设计上,拿出一个包含RT-Thread的满意的毕业设计。十分感谢本次训练营让我受益颇多,我会尽快把所学得知识转化为自己的能力。再次感谢RT-Thread,感谢群内大佬的支持和工作人员的努力。谢谢!!!
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
_xiangxi
这家伙很懒,什么也没写!
提问
9
回答
47
被采纳
1
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部