|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2021-6-17 08:55 编辑
8 G% p' U7 G* s- G# t, S# L f
U+ V8 p0 l! f3 M2 a, F# ~$ n前言! A1 [. X- j' _. ]+ j* g0 L
一、TWEN-ASR开发板介绍2 L0 |% {: d- R. E- r' k3 P1 v
二、程序编写、下载、调试5 _3 v2 l% Z% r2 l$ j( u
三、运行测试- Z' e( e5 k2 ]/ J) H
四、总结0 Q% c# I/ o( N
前言
) X0 D# |. ?' @# J( P 语音识别这个词,相信大家都不陌生,现在流行的智能音箱基本都有语音识别功能,如Alex、小爱音箱、天猫精灵、小度音箱等等。市面上语音识别的模块也很多,主要分为两大类在线语音识别和离线语音识别。前面提到的智能音箱,需要在线才有灵魂。智能音箱可以控制家电,而控制的家电的产品都需要进入相应的生态圈。对于开发者而言,也许会跟我遇到这样的问题:+ h9 k: ~5 e ^* y
(1)唤醒词不能更改;* i3 \0 z1 R7 _! v
(2)离线控制功能受限;. F7 S+ D# B! [3 H$ \0 D/ W
(3)只能按照智能音箱厂商协议进行产品。
3 B$ g% Q! }- i0 Z1 z 然而有这么一个芯片,可以任意修改唤醒词,可以离线语音识别控制,可以快速编写程序,这个芯片就是TWEN-ASR。本篇文章将使用TWEN ASR ONE V1.0开发板,进行语音识别和控制测试。主要内容有:
8 B+ ~$ T/ t7 [: A7 {( `; [7 d8 J) @8 t: y7 ~% e$ V7 e2 p
TWEN-ASR开发板介绍;
/ }- l0 B: N* V' \: C程序编写、下载、调试;
" H: I. k& n5 r+ L$ ITWEN-ASR运行测试。
; e3 J6 p; }4 N! ]6 g: `& C9 f$ e! @, F" s( n" d3 g8 ^# `9 j
l" S3 A( T. R& c# P3 U
一、TWEN-ASR开发板介绍
* m g5 ^1 |% i3 z
0 \8 i: E, i+ u
: g( F: }! h1 O% j# O0 z 开发板板载一颗 RGB 灯,引出 26 个 IO,外接喇叭和麦克风,用于快速验证语音产品功能。芯片内置脑神经网络处理器 BNPU,支持 200 条命令词以内的本地语音识别,内置 CPU核和高性能低功耗 Audio Codec 模块,集成多路 UART、IIC、SPI、PWM、GPIO 等外围控制接口,可以开发各类高性价比单芯片智能语音产品方案[1]。+ ?" r1 h% m: \, b: Q) z
. k: g+ z; I4 H: m
3 M5 B3 r( G# Y3 ^+ K. v! ~8 `( R3 Q m8 V+ q0 U1 m
图1.1 TWEN-ASR ONE 引脚分布及功能图 # p; s( q5 Q4 ^7 l5 k
, @0 I+ F( a% j3 b* ^5 r8 o: p% p5 v$ O0 @- I
TWEN-ASR ONE 资源丰富。个人觉得可惜的是没有复位按键。除了主板还有麦克风、扬声器。如下图1.2,1.3所示。
w- K' ^: o( l4 M) E7 s6 _1 q: X/ C3 E+ T' R2 `- \' y
n; b- x) T7 _图1.2 麦克风
7 c4 F' h# _" \
- W% S7 v( k% J; l. v6 F
# U; f9 ~) j3 M5 k% w5 l图1.3 扬声器
3 v; D; K# _, n+ a) ~& v还有下载程序需要用到的下载器。如下图1.4所示。, s) `. Q% z, s9 g1 d, K
0 M k7 j2 A }; q( I9 d3 r! N3 T$ h
! _% K) ~3 }- L8 O1 B图1.4 下载器
6 B0 D/ k6 {4 s9 Y% T( I5 I二、程序编写、下载、调试$ P4 c" f# T1 R: n& B
" A0 u1 }8 X3 @. l
(1)安装天问Block软件。 天问Block开发软件主推图像化编程,当然也可以进行字符编程。其中,天问Block下载网址。安装完成后,编程选择设备为TWEN-ASR,如下图所示。
$ j2 c8 }* w, u# s& @6 H; ^% h5 L* N, L( f
6 m) m& O3 w6 i0 Y0 ]图2.1 天问Block设备选择图
$ D* o; I: ~0 o% G# }. A$ P
' d$ b: e, v" L3 m9 o% I" K U) G" y2 w
(2)程序编写。 首先打开范例代码1.第一个云因识别程序.hd,默认是图形化编程。; A, Z* a; T8 Q4 Y' O) ~
% F5 _3 P) B+ N* p$ o
7 @5 N- t9 u l1 |1 M图2.2 选择范例代码
/ p: w! N$ W" I
, C& d& m& R. i4 w+ e$ w4 a0 K l d3 p' e' X
.图形代码
" L# V) \# i$ I. l
: }2 j3 o( S5 P4 Y! \" i1 b H' U, k" p
% P8 l9 ]0 w0 @# K, I* _图2.3 图形化代码 9 i: d( a% B. w: z
+ k9 i! Q% D6 r; h3 f$ p
5 L! a; i, g( F/ t' d, i从代码我们可以看出,程序分两块,一块是初始化,另一块是ASR_CODE。初始化程序是上电时运行一次,而ASR_CODE是循环运行。
3 i" J5 x7 {% M3 z) Z! [1 T. B
( q) L* g9 ?6 {& k) L" M初始化过程:
5 j/ a* V4 D) K8 f6 f+ S2 F4 E 1、 播报音设置。 可以设置不同的男声、女生。选择还是很多的。设置时,还可以听到声音,有点像手机换铃声,点击铃声就会播放铃声的声音。音量和语速根据自己的喜好选择即可。
5 F# {3 L( i9 N6 v
) P1 H6 i' j9 u1 d$ w
+ W+ D( d& P7 t9 x5 D7 A0 t* u图2.4 播报语音选择 ' g# F1 x& Y. C8 J+ y& h7 S0 N: Y# f/ ?0 K
2、 添加欢迎词设置。 欢迎词是上电的时候会播报。9 P S2 B6 S/ a6 q) w5 T/ p( M! r
3、 添加退出语音设置。 一段时间没有语音操作后,模块会播报退出语音,然后需要唤醒词唤醒。, P. M" y1 O, X3 u
4、 添加识别词(唤醒词)。 唤醒词是唤醒模块工作的识别词。) j3 D1 Y3 s# o: I; S$ y# B$ V
5、 添加识别词(命令词)。 命令词是需要唤醒后工作的识别词。
, i; f+ ?2 j d# m6 Q, h& M
2 L5 a, X; I7 s5 ~, U3 I字符代码
; X7 I3 o4 z. o: F# t8 `8 X/ M0 E6 P+ j; h
与前面的图形化编程代码对应如下:
; d: F* d7 g% t! J3 N# q- w#include "asr.h") U9 a! W1 q5 `
#include "setup.h" F. k% l9 F/ z, p" J
- C! f Q: M8 H! Xuint32_t snid;
" \' `9 `) N/ c$ @void ASR_CODE();) m U. m6 [& l- U1 _9 L
3 m4 T" p5 X: N6 X) W
//{ID:250,keyword:"命令词",ASR:"最大音量",ASRTO:"音量调整到最大"}
% W& Y' v1 W' E' j//{ID:251,keyword:"命令词",ASR:"中等音量",ASRTO:"音量调整到中等"}
1 ]6 N# l, ^* f2 ^7 K* ?4 Q& Z//{ID:252,keyword:"命令词",ASR:"最小音量",ASRTO:"音量调整到最小"}
. g3 S$ g9 x- |; n& K/*描述该功能..." H+ R7 k W3 ?4 o
*/
: [/ ^( {" v+ N9 N& ^1 q. z2 Yvoid ASR_CODE(){
, G: Z, }* C' N- x4 W' a if((snid) == 4){; V+ e, a" b: u, U) p
digitalWrite(13,1);: [. j3 j/ S3 t- a# N# r# h
}
+ t7 h z. K) W3 K& |) z if((snid) == 6){/ i$ _& l, O. z/ s2 D7 ~ d- B C
digitalWrite(13,0);, @( e0 c- C8 D S3 t
}! R/ h8 ] ^; b0 O5 L
}8 i8 `4 X0 x% f2 @! Y# z; c+ T
( n& I# W8 L( e6 L8 W Zvoid setup()4 O V7 M, P0 {( w
{
7 k8 j/ Q U, c' ]; O+ B r //{speak:小蝶-清新女声,vol:10,speed:10}! a' m! K4 K5 ^5 k9 f
//{playid:10001,voice:欢迎使用智能管家,用智能管家唤醒我。}
4 W- d7 C5 y- `2 y- o! h //{playid:10002,voice:我退下了,用智能管家唤醒我}3 t9 Y0 f* Q: L7 J9 m
//{ID:2,keyword:"唤醒词",ASR:"智能管家",ASRTO:"我在"}+ Y5 E* P- ~) \
//{ID:4,keyword:"命令词",ASR:"打开红灯",ASRTO:"好的,马上打开红灯"}
9 v9 u1 S( F/ ~4 Y //{ID:6,keyword:"命令词",ASR:"关闭红灯",ASRTO:"好的,马上关闭红灯"}
# ^- b: A: K+ ? u1 r7 ` d}
3 a- n& ]7 N. Z- ?% }; V) p" `/ ~- J" E
————————————————
- C( w r% i \- L% }2 ]) ~" M0 v& g1 i
& n4 ?3 E- ]& e* \程序实现的功能是语音识别到打开红灯会打开红灯,识别到关闭红灯会关闭红灯。 RGB电路如下:7 A, q; g2 N0 o4 j
, E1 l7 W7 C _, y+ k& T) B8 G% v. r5 j
图2.5 RGB灯原理图
3 u; S2 c, h$ z* _9 J在程序中,PWM4(Pin13)高低电平就是控制红灯的亮灭。
! J* J) N& _$ P0 i/ Z) f& [7 N
9 D6 I9 f& i6 f5 h- a3 n e (3)程序下载。 首先确保线路连接正常,如下图2.6所示。然后需要生成模型,最后编译下载。1 T) V7 Y" ?: e$ L! `7 s
; v n! s# z$ ^5 J2 ^# D
& S- r: K* \% g* P% t7 d
5 M* m. ?7 t7 p图2.6 现在线路连接 1 ?; ~9 x! O1 g7 k
9 r/ c3 ^+ Y6 [: t图2.7 下载顺序和选择
+ S9 h( `0 ^# D o5 G生成模型需要登录,如果没有账号密码,需要注册。生成模型后,点击编译下载。第一次下载的时间比较长。可能需要3分钟左右,耐心等待。以下是烧录的过程:
$ [9 _7 L% \! z; q: A" \1 M# g' R7 X8 v# ?3 ?
图2.8 模型生成
6 h. C y. B* N+ O- }0 _, H( N0 i6 M4 m/ ^
图2.9 下载过程1
+ A A' a6 U# ]! C" P; |, n4 C) c& D$ ?4 Y; n, z
' A% a# p7 G$ P: N) b7 g图2.10 下载过程2
& P: @" J4 g3 w0 V ]. u4 ^* K( s2 Y下载完成后,就会播放欢迎词。
- t* `$ [) L" \+ O9 Y7 O
2 G" I M( O$ U三、运行测试
1 N3 K9 J, X" v) @程序下载完成后,就会播报欢迎词。
: b5 t& y! I$ q4 V4 x. Y! u! ?+ c8 a3 D$ C9 k9 u; Q
ASR:欢迎使用智能管家,用智能管家唤醒我。( ?$ e; T' O9 `2 } K# u4 P
% ?4 X3 S. u8 ?- F我:智能管家. ~& }/ W9 J& W
5 Q; ~, D: e! [: \/ E
ASR:我在
( Z5 |4 ]! Z* [0 C6 E% o _. W- S5 ^
我:打开红灯: s2 ]! R, k3 r+ f, N
4 J3 E4 A3 @2 H5 p" }7 @
ASR:好的,马上打开红灯
, Q( H4 o. w1 E6 h; _7 L0 u6 v6 v g7 O$ j4 u" u
6 {1 Y; P0 b h$ T图3.1 红灯亮 : A* I2 Y/ n9 Y U6 d
& ~, S6 o' q5 z4 N" y& G7 a
我:关闭红灯4 X0 `$ d& J& C5 n! M) m* g9 N
: X2 @8 l% F$ e$ _% F X
5 [. k) g0 V$ }/ R/ L; ?1 ^2 O0 I4 k' m/ E
图3.2 红灯灭 % x9 d! h- E- }* u6 W7 C' G. N
ASR:好的,马上关闭红灯
4 L) M+ y5 V4 R. Y. J% ]) j8 C1 i% Q4 o6 r: S
语音识别反应很快,基本上一说完就反应过来。而且声音小的时候也可以反应过来。第一个程序语音识别开灯和关灯,效果还是不错的。2 i5 o1 J! h+ l* `% k4 A
C' @; m# ?6 K; Y$ r
四、总结
9 h7 j. E% |; X b% Z 本文介绍了基于TWEN-ASR-ONE开发板,实现的语音识别功能,并且进行控制开灯和关灯操作。整过过程还是比较简单。图形化编程很直观,阅读代码功能对初学者来说,基本上没有什么问题。字符代码,可以让我们过度到图形化代码编程。TWEN-ASR-ONE开发语音识别编程很简单。欢迎词、退出语音、命令识别词、唤醒识别词可以自定义。还可以进行不同声音、音量、语速选择。总体来说,对于DIY功能基本够用。. X9 k3 D. M/ d# N1 u
, b% _4 ^& D' c2 W5 Q8 ^: i/ k0 S& o! C5 S3 \
4 J9 M+ b$ a5 H1 y7 J2 ~4 t$ t
( O0 r2 o" q6 k6 h% J" Z4 U
|
|