|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2021-6-17 08:55 编辑 2 Y' C, |, X" j$ [8 U/ E' C, p& ^
. h# J' X! c2 G4 t; S
前言
& U$ Y1 i( S# _! B$ V$ b; i, A一、TWEN-ASR开发板介绍 k( ?+ |" k9 e0 S7 k' r' @3 ~
二、程序编写、下载、调试" K* |3 c) Z# ?& X6 P7 T: ~
三、运行测试) _/ w" a4 Y7 T- A3 `2 r
四、总结. N% Z- c5 R2 G
前言, x$ h( i3 V, R2 Z3 ~2 j8 S
语音识别这个词,相信大家都不陌生,现在流行的智能音箱基本都有语音识别功能,如Alex、小爱音箱、天猫精灵、小度音箱等等。市面上语音识别的模块也很多,主要分为两大类在线语音识别和离线语音识别。前面提到的智能音箱,需要在线才有灵魂。智能音箱可以控制家电,而控制的家电的产品都需要进入相应的生态圈。对于开发者而言,也许会跟我遇到这样的问题:
, u# c' y+ i, {/ \3 m (1)唤醒词不能更改;) G( E* K/ F' p3 m
(2)离线控制功能受限;
, c; [, g: o7 h+ t2 G (3)只能按照智能音箱厂商协议进行产品。
/ f9 n w6 F: C- X 然而有这么一个芯片,可以任意修改唤醒词,可以离线语音识别控制,可以快速编写程序,这个芯片就是TWEN-ASR。本篇文章将使用TWEN ASR ONE V1.0开发板,进行语音识别和控制测试。主要内容有:; J4 m8 I& e% n- W, x
8 x' z W# j. l- D9 @' h% Q% ^* XTWEN-ASR开发板介绍;! w, q$ B' A! v/ H! Q
程序编写、下载、调试;
0 m0 m* Q( w: j7 w% gTWEN-ASR运行测试。
+ a3 p$ F6 t6 s) b4 N8 Y) H) v& p
, V* i/ X& Q e( N' z! f" s
+ J1 {& z! Y# Y: u; A! f一、TWEN-ASR开发板介绍; R& q2 z2 p: {' \
6 B; n' p6 f5 K: ]
) R2 X9 x3 F3 j1 l6 A3 G# M
开发板板载一颗 RGB 灯,引出 26 个 IO,外接喇叭和麦克风,用于快速验证语音产品功能。芯片内置脑神经网络处理器 BNPU,支持 200 条命令词以内的本地语音识别,内置 CPU核和高性能低功耗 Audio Codec 模块,集成多路 UART、IIC、SPI、PWM、GPIO 等外围控制接口,可以开发各类高性价比单芯片智能语音产品方案[1]。
+ }9 K/ Y; S" D2 y+ o. a: g2 e( {& F. u) h0 |5 E
% L- ^( c. ]+ f3 B8 u
7 Q& w* k- I% w- E图1.1 TWEN-ASR ONE 引脚分布及功能图 . \ J# Y, z( N. z
" j2 p: w' Q# |8 s- |
( E, N9 ]' u% E( v9 M% _$ G TWEN-ASR ONE 资源丰富。个人觉得可惜的是没有复位按键。除了主板还有麦克风、扬声器。如下图1.2,1.3所示。5 ?6 m5 V. c7 Y& g( A% `% a
; _! c Q" _+ f: ?! B# v" @
0 N0 L! W' C8 P, E# E b' d/ m6 M) D; M
图1.2 麦克风
5 i8 e3 T5 @6 m+ _; _6 N0 b, n8 o
" ~' g; V2 A0 g' { X5 p; c
: Q4 n- Z/ Q( I* x& C3 g图1.3 扬声器
' w" D9 B. G. a8 J还有下载程序需要用到的下载器。如下图1.4所示。
6 e. |: P5 ^! |0 e, `, K+ Z X# l& y2 W2 n. ~ @* U4 m1 D& W* P+ N
, J/ Y h5 ^5 T9 C& w% u9 k, n1 y; y
图1.4 下载器 2 r3 O1 p, @9 I5 [$ j
二、程序编写、下载、调试
p# Z; K v& r8 z" L- o# o! f. K+ f+ ]3 C/ P# p
(1)安装天问Block软件。 天问Block开发软件主推图像化编程,当然也可以进行字符编程。其中,天问Block下载网址。安装完成后,编程选择设备为TWEN-ASR,如下图所示。4 {" F" P# n. V( p) r% B3 `
- E% B$ Q. T4 \# b' A3 ?! D+ @9 }
! I- F+ |3 f7 F' L% N3 Y8 R0 l
图2.1 天问Block设备选择图 & B- G( q2 Y9 f% \- k
$ N: K) i! Q) E' r* S V+ i8 M) Y# L1 ?9 A! K4 C
(2)程序编写。 首先打开范例代码1.第一个云因识别程序.hd,默认是图形化编程。- d2 U2 L2 G5 e: Q: m4 D
0 h4 n( f) R! D0 e2 r- Y
) G9 E6 Z, q9 @9 |图2.2 选择范例代码
( M( |& O8 d0 w+ z) K2 s* L" p# t. |
1 b; M8 B" ?+ I1 @& M9 ] b. l
.图形代码" K9 l% j# s! c6 C
C- j0 w& s1 F/ j
W* D( B% S4 ?9 ?0 G- k
$ J: \: R1 z, K. S图2.3 图形化代码
0 b8 j2 u6 I& m* k4 E' s4 c: n: {" @, H) `" P4 F" `
o! V9 F9 P. @0 q2 Y2 T1 r
从代码我们可以看出,程序分两块,一块是初始化,另一块是ASR_CODE。初始化程序是上电时运行一次,而ASR_CODE是循环运行。
5 V* p% d/ ]! e* v# ~# w* ~8 ?) R$ r6 M9 O( a8 D' O S+ S
初始化过程:
0 C% [4 ^% Z; x 1、 播报音设置。 可以设置不同的男声、女生。选择还是很多的。设置时,还可以听到声音,有点像手机换铃声,点击铃声就会播放铃声的声音。音量和语速根据自己的喜好选择即可。
1 [8 T( I+ y. R$ B( Z9 Q) Z
5 U, G% h: @( v( H+ \9 b* M! v1 \/ E( O& N
图2.4 播报语音选择 ) b) Z4 d5 j9 X0 L+ K
2、 添加欢迎词设置。 欢迎词是上电的时候会播报。
7 H: W. D/ R# A3 r! J 3、 添加退出语音设置。 一段时间没有语音操作后,模块会播报退出语音,然后需要唤醒词唤醒。& c: B8 n- S4 w& z1 D. P
4、 添加识别词(唤醒词)。 唤醒词是唤醒模块工作的识别词。, U9 I9 U( V: h
5、 添加识别词(命令词)。 命令词是需要唤醒后工作的识别词。0 E9 B9 I, v& S
) I4 Y& X3 q T/ [
字符代码
. J& O2 v2 |; Q+ M1 d8 {/ j* |, t S" @3 |
与前面的图形化编程代码对应如下:
6 V9 h$ v3 F( t( L! g7 o#include "asr.h"
$ @3 d( q; q, S: o# Z" T' r#include "setup.h"
( d- O0 S+ e; r1 v J
. W; g+ F" B3 Iuint32_t snid;7 f& h f9 M% ]: |0 X
void ASR_CODE();$ o7 a6 o( _7 X
- x4 [, s$ Q2 ]- R( \3 J2 m
//{ID:250,keyword:"命令词",ASR:"最大音量",ASRTO:"音量调整到最大"}
2 |: z' @! i+ n' r) b% P& i$ o//{ID:251,keyword:"命令词",ASR:"中等音量",ASRTO:"音量调整到中等"}) S0 R! e: A) ~! y! K: P3 e* U: B
//{ID:252,keyword:"命令词",ASR:"最小音量",ASRTO:"音量调整到最小"}1 A* K- K w4 U e$ U0 O
/*描述该功能...
a! Z4 T& j# i) u% ]2 {*/ K/ m3 v/ `# f9 c8 I+ c; ]4 f: y
void ASR_CODE(){
8 r4 a, \, N# [3 W; L1 [9 W( k if((snid) == 4){
* W4 K$ k3 d! B digitalWrite(13,1);
8 g0 X1 P' ]6 h, E" h4 `7 A }- n# O* c* u% `. O- p& T' C
if((snid) == 6){2 P( t R! u, Z- i* |& r8 v6 R
digitalWrite(13,0);
9 u* A* G+ [# r }
. T# {& b, s, ]; `9 C}
, w! V8 c; ]3 q
5 I- m1 N; L" w9 Z& f0 lvoid setup()0 v# U u( t+ T7 T
{( V& `( o+ {. t
//{speak:小蝶-清新女声,vol:10,speed:10}
3 \0 Y5 I2 z8 J //{playid:10001,voice:欢迎使用智能管家,用智能管家唤醒我。}
8 }9 r: {: P% M. v //{playid:10002,voice:我退下了,用智能管家唤醒我}
* |5 M2 o/ Q3 i1 t //{ID:2,keyword:"唤醒词",ASR:"智能管家",ASRTO:"我在"}
6 A' h/ h. P. ~. F, I! l7 e //{ID:4,keyword:"命令词",ASR:"打开红灯",ASRTO:"好的,马上打开红灯"}0 Q2 d# [1 _; G) J
//{ID:6,keyword:"命令词",ASR:"关闭红灯",ASRTO:"好的,马上关闭红灯"}
& X& |( G; N. y+ n. m6 Y7 a; A. s}
$ B" G" Y. ]0 p
# C9 U; I5 Y. l! D3 m; O; X————————————————
5 B0 ^& ^+ R& T" `1 \6 a$ J/ k& V( c, z& c/ `) n1 y
程序实现的功能是语音识别到打开红灯会打开红灯,识别到关闭红灯会关闭红灯。 RGB电路如下:
/ r4 W' G& \* J% S
, S$ w) g5 S; g2 f/ X0 O! f4 g6 i" P {; }
图2.5 RGB灯原理图
8 _4 v; J* m9 [4 H在程序中,PWM4(Pin13)高低电平就是控制红灯的亮灭。
: U) s1 p" R# {
6 m/ i2 C- } q) O' h$ W (3)程序下载。 首先确保线路连接正常,如下图2.6所示。然后需要生成模型,最后编译下载。9 @+ S/ Y' X3 t5 a z% f+ @
4 p8 G9 K! C; d; _8 l
1 `: T6 u5 x) }% `2 s
, w( D1 G; G. ?( ]" }图2.6 现在线路连接
6 p4 A: @* D0 I) o6 X! {
) B7 j2 N' A% J6 u图2.7 下载顺序和选择 c1 f6 N) Y' O. Y
生成模型需要登录,如果没有账号密码,需要注册。生成模型后,点击编译下载。第一次下载的时间比较长。可能需要3分钟左右,耐心等待。以下是烧录的过程:. j6 Y8 A1 A9 s: s) a6 h
6 A8 h* F1 Q" a. [
图2.8 模型生成
6 o4 t0 E5 m( X3 f3 U4 H5 {+ b8 F2 l$ p4 V0 V/ u# j
图2.9 下载过程1
# c3 a C& q$ E- ?
- U3 i& p' A- B7 J
' D; I. J: d/ {图2.10 下载过程2 ) W& `& {( X% I, f1 [5 C2 d* a; x
下载完成后,就会播放欢迎词。
/ _2 K7 B/ @+ d% y0 C7 A0 y0 [
: \! c4 H* T, y三、运行测试 H2 H( o5 Q" {0 a: P. D y
程序下载完成后,就会播报欢迎词。
2 D( x' e$ j: r N8 w2 e
# J1 {3 d# J; A* X1 H5 [3 p7 k. ^& s+ PASR:欢迎使用智能管家,用智能管家唤醒我。
; `1 f5 G. [, A9 `
M; O1 U5 c% b8 p2 q我:智能管家
4 X1 m: E" `: l3 m: h4 ^1 J8 c. g5 Y1 @2 G% c, b3 Y* r7 k* d) u& e
ASR:我在8 N1 ~* ?% [0 |- R$ {8 C
6 P3 M3 x; J+ Y2 S" y7 ^- r- a1 z我:打开红灯. D$ ]* a5 O9 V$ ]2 p' S& d
1 ?1 F |; b6 l/ bASR:好的,马上打开红灯# Z- Q/ m1 k6 b9 B- L9 ]% {
, q2 M6 J* E) Q {
3 v: r, ^+ s& N7 {; X' S图3.1 红灯亮 7 ]2 K& R: c1 O- ^ S
! Y9 Z- m$ j' J2 Z7 L* Z我:关闭红灯( I$ d: c. X |$ }7 S
; [6 @4 m( h; G2 F B1 n3 }5 q
9 \1 Y: I5 h& \4 C/ Q: |
# V q% V6 z, R: u8 ?图3.2 红灯灭
1 v5 t# Z5 I4 C, jASR:好的,马上关闭红灯
/ g# E2 e- t6 q2 d3 g
4 e( l; p- i" [: k8 m/ `; i 语音识别反应很快,基本上一说完就反应过来。而且声音小的时候也可以反应过来。第一个程序语音识别开灯和关灯,效果还是不错的。
" y5 v, D& |& v
# M7 y5 X' [" I7 d四、总结
( o$ X+ Z& d) n7 Q/ h 本文介绍了基于TWEN-ASR-ONE开发板,实现的语音识别功能,并且进行控制开灯和关灯操作。整过过程还是比较简单。图形化编程很直观,阅读代码功能对初学者来说,基本上没有什么问题。字符代码,可以让我们过度到图形化代码编程。TWEN-ASR-ONE开发语音识别编程很简单。欢迎词、退出语音、命令识别词、唤醒识别词可以自定义。还可以进行不同声音、音量、语速选择。总体来说,对于DIY功能基本够用。" b. w6 @$ d: a& T
s5 k7 ^! m( A8 Z0 T& d {& Q8 S7 F5 t9 b4 l
7 q* E) v( ~7 h$ R1 d. O) I
2 \# S9 ?$ c; p, `9 ~: ?4 Q3 p. x
|
|