[问题讨论] 【平头哥RVB2601创意应用开发】 七、RVB2601之声音识别初试

kit7828   2022-4-7 09:49 楼主

申请平头哥项目用的是语音识别,也一直尝试做语音识别,但在嵌入式开发板中尝试,还是难度太高。

用的是出ch2601_ft_demo例程,ft_demo实现了声音的录取和回放,程序空间中给语音数据提供48K的空间 image.png  在ft_demo的例程中,去除了多次回放,然后对录取的48K语音数据进行了分帧处理,为方便操作,用了128个字节作为一帧,大概16ms,因为采样率是8K。

然后对每帧的数据进行中值滤波,滤波后检测其绝对能量和过零率,得到了每帧的能量和过零数据。

printf("\n Frame_Pow: ");
		
		for(i=0;i<384;i++){
			FrameSum = 64;
			for(j=0;j<FrameSize;j++){
				FrameSum += repeater_data_addr[i*FrameSize+j];
			}
			FrameSum =  FrameSum >> 7;
			FramePow = 64;
			for(j=0;j<FrameSize;j++){
				if(repeater_data_addr[i*FrameSize+j] >= FrameSum)
					repeater_data_addr[i*FrameSize+j] -= FrameSum;
				else 
					repeater_data_addr[i*FrameSize+j] = FrameSum - repeater_data_addr[i*FrameSize+j] + 128;
				FramePow += repeater_data_addr[i*FrameSize+j] & 0x7F;
			}
			Frame_Pow[i] = FramePow >> 7;
			if(Frame_Pow[i] > MaxPow) MaxPow = Frame_Pow[i];
			
			Frame_Zero[i] = 0;
			k = repeater_data_addr[i*FrameSize] & 0x80;
			for(j=0;j<FrameSize -1;j++){
				n = repeater_data_addr[i*FrameSize+j+1] & 0x80;
				if(k!=n) {
					k = n;
					Frame_Zero[i] ++;
				}
			}
			printf("[%d,%d],", Frame_Pow[i], Frame_Zero[i]);
		}

具体评测中发现,语音这边,只能测试3次,3次之后就会自动重启,不知道是不是看门狗起了作用?

image.png  想简单的对这两组数据进行识别,发现还是太天真了,

差异很大

image.png   image.png  离线的语音识别,看来难度不小啊。估计很难在评测的时间内完成了,不知道坛友们有啥建议?

回复评论 (14)

用本地方式进行声音识别不好实现,最好是将声音数据传到服务器让它进行识别,然后再把识别结果发给单片机。

点赞  2022-4-7 11:02

发给第三方识别是不是要收费的,能不能自己用开源项目来做?

点赞  2022-4-7 16:01
引用: lugl4313820 发表于 2022-4-7 16:01 发给第三方识别是不是要收费的,能不能自己用开源项目来做?

之前用过Python的语音识别库,识别结果不忍直视!

点赞  2022-4-7 18:21

单纯让小板子进行识别 恐怕难度不是一星半点,不如转而让板子把语音发到服务器进行识别和解析,就像输入法那样,发一个语音包然后从服务器回传一个识别好的字符串然后本地进行自然语言处理,拆字语义分析啥的。

点赞  2022-4-7 22:57
引用: 吾妻思萌 发表于 2022-4-7 22:57 单纯让小板子进行识别 恐怕难度不是一星半点,不如转而让板子把语音发到服务器进行识别和解析,就像输 ...

如果传到服务器识别的话,应该可以直接把结果发给小板子了,语义分析都可以在服务器完成

点赞 (1) 2022-4-8 17:37
引用: wangerxian 发表于 2022-4-7 11:02 用本地方式进行声音识别不好实现,最好是将声音数据传到服务器让它进行识别,然后再把识别结果发给单片机。 ...

应该要用spss或者matlab分析一下相关性等,然后再来实现

点赞  2022-4-8 17:40
引用: lugl4313820 发表于 2022-4-7 16:01 发给第三方识别是不是要收费的,能不能自己用开源项目来做?

某度 某讯 有每月多少条免费的 获取token 然后有接口就能每月传语音进去的

点赞  2022-4-8 22:17

可以参考esp32的离线语音识别,开源的

点赞  2022-4-8 22:32
引用: hayden. 发表于 2022-4-8 22:32 可以参考esp32的离线语音识别,开源的

ESP32的离线语音识别是不是需要官网训练模型?

点赞  2022-4-9 09:41
引用: kit7828 发表于 2022-4-8 17:40 应该要用spss或者matlab分析一下相关性等,然后再来实现

那如果要本地的话,就需要单片机运行相关算法,那这款单片机算力应该不行。

点赞  2022-4-9 09:42
引用: wangerxian 发表于 2022-4-9 09:42 那如果要本地的话,就需要单片机运行相关算法,那这款单片机算力应该不行。

谢谢提醒,离线的识别感觉应该还有很多应用场合

点赞  2022-4-11 14:48
引用: hayden. 发表于 2022-4-8 22:32 可以参考esp32的离线语音识别,开源的

有地址吗?有的话,辛苦提供一下

点赞  2022-4-11 14:49
引用: 吾妻思萌 发表于 2022-4-8 22:17 某度 某讯 有每月多少条免费的 获取token 然后有接口就能每月传语音进去的

好的,以前好像在这个某度看到过

点赞  2022-4-11 14:50

https://occ.t-head.cn/community/post/detail?spm=a2c6h.12873639.article-detail.5.41b02ed0x0yJaQ&id=4018742358014234624

这个同学已经实现了,你可以参考一下

点赞  2022-4-15 21:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复