VR3 Manual

VR3_manual

VR3_manual

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 38

Voice Recognition Module V3
Speak to Control (Arduino compatible)
Overview
ELECHOUSE Voice Recognition Module is a compact and easy-control speaking recognition board.
This product is a speaker-dependent voice recognition module. It supports up to 80 voice commands in all.
Max 7 voice commands could work at the same time. Any sound could be trained as command. Users need
to train the module first before let it recognizing any voice command.
This board has 2 controlling ways: Serial Port (full function), General Input Pins (part of function). General
Output Pins on the board could generate several kinds of waves while corresponding voice command was
recognized.
What’snew?
We already have Voice Recognition module V2. It supports 15 commands in all and only 5 commands at the
same time.
On V2, voice commands are separated into 3 groups while you training it. And only one group (5
commands) could to be imported into Recognizer. It means only 5 voice commands are effective at the
same time.
On V3, voice commands are stored in one large group like a library. Any 7 voice commands in the library
could be imported into recognizer. It means 7 commands are effective at the same time.
Parameter
Voltage: 4.5-5.5V
Current: <40mA
Digital Interface: 5V TTL level for UART interface and GPIO
Analog Interface: 3.5mm mono-channel microphone connector + microphone pin interface
Size: 31mm x 50mm
Recognition accuracy: 99% (under ideal environment)
Feature
Support maximum 80 voice commands, with each voice 1500ms (one or two words speaking)
Maximum 7 voice commands effective at same time
Arduino library is supplied
Easy Control: UART/GPIO
User-control General Pin Output
Terminology
VR3 -- Voice Recognition Module V3
Recognizer -- a container where acting voice commands (max 7) were loaded. It is core part of
voice recognition module. For example, it works like “playing balls”. You have 80 players in your
team. But you could not let them all play on the court together. The rule only allows 7 players
playing on the court. Here the Recognizer is the list which contains names of players working on
the court.
Recognizer index -- max 7 voice commands could be supported in the recognizer. The
recognizer has 7 regions for each voice command. One index corresponds to one region: 0~6
Train -- the process of recording your voice commands
Load -- copy trained voice to recognizer
Voice Command Record -- the trained voice command store in flash, number from 0 to 79
Signature -- text comment for record
Group -- help to manage records, each group 7 records. System group and user group are
supported.
Instruction
Here we will introduce the Arduino Library and VR3 Protocol
ForArduino
Prepare
Voice Recognition V3 module with microphone
Arduino board (UNO recommended)
Arduino Sensor Shield V07 (optional)
Arduino IDE
Voice Recognition V3 library (Download zip file)
HardwareandSoftwarePreparation
1. Connect your Voice Recognition V3 Module with Arduino, By Default:
2. Download VoiceRecognitionV3 library. (download zip file or use git clone
https://github.com/elechouse/VoiceRecognitionV3.git command)
3. If using zip file, extract VoiceRecognitionV3.zip to Arduino Sketch\libraries folder, or if you
use git clone command copy VoiceRecognitionV3 to Arduino Sketch\libraries .
Train
1. Open vr_sample_train (File -> Examples -> VoiceRecognitionV3 -> vr_sample_train)
2. Choose right Arduino board(Tool -> Board, UNO recommended), Choose right serial port.
3. Click Upload button, wait until Arduino is uploaded.
4. Open Serial Monitor. Set baud rate 115200, set send with Newline or Both NL & CR.
5. Send command settings(case insensitive) to check Voice Recognition Module settings.
Input settings, and hit Enter to send.
6. Train Voice Recognition Module. Send sigtrain 0 On command to train record 0 with signature
"On". When Serial Monitor prints "Speak now", you need speak your voice(can be any word,
meaningful word recommended, may be 'On' here), and when Serial Monitor prints "Speak
again", you need repeat your voice again. If these two voice are matched, Serial Monitor prints
"Success", and "record 0" is trained, or if are not matched, repeat speaking until success.
What is a signature? Signature is a piece of text description for the voice command. For
example, if your 7 voice command are “1, 2, 3, 4, 5, 6, 7”, you could train in the following way:
sigtrain 0 one
sigtrain 1 two
sigtrain 2 three
sigtrain 3 four
sigtrain 4 five
sigtrain 5 six
sigtrain 6 seven
The signature could be displayed if its command was called.
When training, the two led on the Voice Recognition Module can indicate your training process.
After sending the training command, the SYS_LED (yellow) is blinking fast which remind you to
get ready. Speak your voice command as soon as the STATUS_LED (red) light lights on. The
recording process ends once when the STATUS_LED (red) lights off. Then the SYS_LED is
blinking again, get ready for next recording process. When the training process ends successful,
SYS_LED and STATUS_LED blink together. If the training fails, SYS_LED and STATUS_LED
blink together, but quickly.
7. Train another record. Send sigtrain 1 Off command to train record 1 with signature "Off".
Choose your favorite words to train (it can be any word, meaningful word recommended, may be
'Off' here).
8. Send load 0 1 command to load voice. And say your word to see if the Voice Recognition
Module can recognize your words.
If the voice is recognized, you can see.
9. Train finish. Train sample also support several other commands.
ControlLEDSample
Here we show a simple example showing how to control the LED on Arduino board (connecting to
pin13) through voice commands. Before this example, you need to train the VR module first in the way
as vr_sample_train shows above. Use the following commands:
sigtrain 0 on Train the voice command used to light on the LED
sigtrain 0 off Train the voice command used to turn off the LED
Then following the steps:
1. Open vr_sample_control_led (File -> Examples -> VoiceRecognitionV3 ->
vr_sample_control_led)
2. Choose right Arduino board (Tool -> Board, UNO recommended), Choose right serial port.
3. Click Upload button, wait until Arduino is uploaded.
4. Open Serial Monitor. Set baud rate 115200.
5. You will see the indication:
Speak the voice commands you train above and check the status of LED on Arduino.
vr_sample_multi_cmd
This sample shows how to use multi commands (more than 7 commands). This sample use RECORD
0 (the first voice command) to switch between the 2 command 'groups' (not Voice Recognition Group
Function). Group 1 is made of RECORD 0, 1, 2, 3, 4, 5, 6. And second group is made up of RECORD 0,
7, 8, 9, 10, 11, 12 .
Note: Before start this sample, you need train your Voice Recognition module first, and make
sure that all records from 0 to 12 should be trained.
vr_sample_check_baud_rate
This sample is used to check the baud rate, when you forgot your custom settings.
vr_sample_bridge
This example allows you to send VR3 protocol commands to VR3 board. For more detail, please refer to
Protocol . Note: do not input Frame Head, Frame Length, Frame End, only need input Frame
Command and Frame Data. For example, Check Recognizer Command is "AA 02 01 0A" for all, here
you only need input 01.
Example:
1. Enable Arduino Serial monitor "Send with newline", Baud rate 115200.
2. Input "01" to "check recognizer".
3. input "31" to "clear recognizer"
4. input "30 00 02 04" to "load record 0, record 2, record 4"
Please refer to libref.pdftogetmoreinformationaboutfunctionsofthislibrary.
VR3Protocol
VR3 protocol contains basic commands to control VR3 boards. For those who use VR3 with other MUC
rather than Arduino, VR3 protocol is very helpful.
All the commands of VR3 are sent through serial port in HEXADECIMAL FORMAT.
Example are supplied with this serial port tool: Access Port
To connect VR3 to PC, this USB-TTL module tool: USB-TTL Module with 5V or 3.3V
BaseFormat
Control
| Head (AA) | Length| Command | Data | End (0A) |
Length = L(Length + Command + Data)
Return
| Head (AA) | Length| Command | Data | End (0A) |
Length = L(Length + Command + Data)
NOTE: Data area is different with different with commands.
Code
ALL CODE ARE IN HEXADECIMAL FORMAT
FRAME CODE
AA --> Frame Head
0A --> Frame End
CHECK
00 --> Check System Settings
01 --> Check Recognizer
02 --> Check Record Train Status
03 --> Check Signature of One Record
SYSTEM SETTINGS
10 --> Restore System Settings
11 --> Set Baud Rate
12 --> Set Output IO Mode
13 --> Set Output IO Pulse Width
14 --> Reset Output IO
15 --> Set Power On Auto Load
RECORD OPERATION
20 --> Train One Record or Records
21 --> Train One Record and Set Signature
22 --> Set Signature for Record
RECOGNIZER CONTROL
30 --> Load a Record or Records to Recognizer
31 --> Clear Recognizer
32 --> Group Control
THESE3CODESAREONLYUSEDINRETURNMESSAGE
0A>Prompt
0D>VoiceRecognized
FF>Error
Details
CheckSystemSettings(00)
Use "Check System Settings" command to check current settings of Voice Recognition Module, include
serial baud rate, output IO mode, output IO pulse width, auto load and group function.
Format:
| AA | 02 | 00 | 0A |
Return:
| AA | 08 | 00 | STA | BR | IOM | IOPW | AL | GRP | 0A |
Description
STA
Trained status
0-untrained
1-trained
FF-record value out of range
BR
Baud rate
0 or 3 -9600
1 -- 2400
2 -- 4800
4 -- 19200
5 -- 38400
IOM
Output IO Mode
0 -- Pulse
1 -- Toggle
2 -- Clear
3 -- Set
IOPW
Output IO Pulse Width
Pulse Mode: 1~15
AL
Power on auto load
0 -- disable
1 -- enable
GRP
Group control by external IO
0 -- disable
1 -- system group
2 -- user group
Example:
CheckRecognizer(01)
Use "Check Recognizer" command to check recognizer of Voice Recognition Module.
Format:
| AA | 02 | 01 | 0A |
Return:
| AA | 0D | 01 | RVN | VRI0 | VRI1 | VRI2 | VRI3 | VRI4 | VRI5 | VRI6 | RTN | VRMAP | GRPM | 0A |
Description
RVN:
The number of valid voice commands in recognizer.
MAX 7
VRIn
n=0~6
Voice commands in recognizer, n is recognizer index value
RTN
The number of total records in recognizer.
VRMAP
Valid command bit map for VRI0~VRI6.
GRPM
Group mode
FF -- not in group mode
00~0A -- system group
80~87 -- user group mode
Example
CheckRecordTrainStatus(02)
Use "Check Record Train Status" command to check if the record is trained.
Format:
Check all records
| AA | 03 | 02 | FF| 0A |
Check specified records
| AA | 03+n | 02 | R0 | ... | Rn | 0A |
Return:
| AA | 5+2*n | 02 | N | R0 | STA | ... | Rn | STA | 0A |
Description
N
Number of trained records.
R0 ~ Rn
Voice record.
STA
Trained voice command status
0 -- untrained
1 -- trained
FF -- record value out of range
Example:
CheckSignatureofOneRecord(03)
Use this command to check the signature of one record.
Format:
| AA | 03 | 03 | Record | 0A |
Return:
| AA | 03 | 03 | Record | SIGLEN | SIGNATURE | 0A |
Description
SIGLEN
signature string length
SIGNATURE
signature string
Example:
RestoreSystemSettings(10)
Use this command to restore settings of Voice Recognition Module to default.
Format:
| AA | 02 | 10 | 0A |
Return:
| AA | 03 | 10 | 00 | 0A |
Example:
SetBaudRate(11)
Use this command to set baud rate of Voice Recognition Module, effect after Voice Recognition Module
is restarted.
Format:
| AA | 03 | 11 | BR | 0A |
Return:
| AA | 03 | 11 | 00 | 0A |
Description
BR
Serial baud rate.
0 -- 9600
1 -- 2400
2 -- 4800
3 -- 9600
4 -- 19200
5 -- 38400
SetOutputIOMode(12)
Use this command to set output IO mode of Voice Recognition Module, take effect immediately after the
instruction execution.
Format:
| AA | 03 | 12 | MODE | 0A |
Return:
| AA | 03 | 12 | 00 | 0A |
Description
MODE
Output IO mode.
0 -- pulse mode
1 -- Flip mode
2 -- Up mode
3 -- Down mode
Here we will introduce more about the output of O1~O5:
Pulse Mode: Output is negative pulse.
Flip Mode: each time while the module recognizes voice command, it will change the state of the output
pin.
Down Mode: The output will become LOW from HIGH once it detects voice command. It will never
come back to HIGH again until the module receives output reset command (14).
Up Mode: The output will become HIGH from LOW once it detects voice command. It will never come
back to LOW again until the module receives output reset command (14).
There will be an example:
A: Starting point while you import the voice group.
B: The 1st time it recognizes voice command.
C: The 2nd time it recognizes voice command.
D: The 3rd time it recognizes voice command.
E: The time while output reset command is received (14).
The back wire is output wave shape.
SetOutputIOPulseWidth(13)
Use this command to set output IO pulse width of Pulse Mode. It takes effect immediately after the
instruction execution. Pulse width is used when output IO mode is "Pulse".
Format:
| AA | 03 | 13 | LEVEL | 0A |
Return:
| AA | 03 | 13 | 00 | 0A |
Description
LEVEL
Pulse width level. Details:
- 00 10ms
- 01 15ms
- 02 20ms
- 03 25ms
- 04 30ms
- 05 35ms
- 06 40ms
- 07 45ms
- 08 50ms
- 09 75ms
- 0A 100ms
- 0B 200ms
- 0C 300ms
- 0D 400ms
- 0E 500ms
- 0F 1s
ResetOutputIO(14)
Use this command to reset output IO. This command can be used in output IO UP/DOWN Mode to
generate a user-defined pulse.
Format:
| AA| 03 | 14 | FF | 0A | (reset all output io)
| AA| 03+n | 14 | IO0 | ... | IOn | 0A | (reset output ios)
Return:
| AA | 03 | 14 | 00 | 0A |
Description
IOn
number of output io
n: 0~6
IOn: 0~6 (HEX)
Example:
Reset IO1
Set Power On Auto Load (15)
Use this command to enable or disable "Power On Auto Load" function.
Format:
| AA| 03 | 15 | 00 | 0A | (disable auto load)
| AA| 04+n | 15 | BITMAP | R0 | ... | Rn | 0A | (set auto load)
Return:
| AA| 05+n | 15 | 00 |BITMAP | R0 | ... | Rn | 0A | (set auto load)
Description
BITMAP
Record bitmap:
00 -- zero record, disable auto load
01 -- one record
03 -- two records
07 -- three records
0F -- four records
1F -- five records
3F -- six record
7F -- seven records
R0~Rn
Record
Example:
to auto-load the first voice command R0 into recognizer
Train One Record or Records (20)
Train records, can train several records one time.
Format:
| AA| 03+n | 20 | R0 | ... | Rn | 0A |
Return:
| AA| LEN | 0A | RECORD | PROMPT | 0A |
| AA| 05+2*n | 20 | N | R0 | STA0 | ... | Rn | STAn | SIG | 0A |
Description
R0~Rn
Voice command record
STA
train result
0 -- Success
1 -- Timeout
2 -- Record value out of range
n
Number of trained voice command record
Example:
To train voice command 01,
Train One Record and Set Signature (21)
Train one record and set a signature for it, one record one time.
Format:
| AA| 03+SIGLEN | 21 | RECORD | SIG | 0A | (Set signature)
Return:
| AA| LEN | 0A | RECORD | PROMPT | 0A | (train prompt)
| AA| 05+SIGLEN | 21 | N | RECORD | STA | SIG | 0A |
Description
RECORD
Voice command record index
SIG
Signature string
PROMPT
Prompt string:
Speak now
Speak again
Success
N
Number of successful training voice commands
Example:
Train command 02 with signature “on”
Set/Delete Signature for Record (22)
Set a signature for a record, one record one time.
Format:
| AA | 03+SIGLEN | 22 | RECORD | SIG | 0A | (Set signature)
| AA | 03 | 22 | RECORD | 0A | (Delete signature)
Return:
| AA | 04+SIGLEN | 22 | 00 | RECORD | SIG | 0A | (Set signature return)
| AA | 04 | 22 | 00 | RECORD | 0A | (Delete signature return)
Description
SIG
signature string
SIGLEN
signature string length
Example:
Set voice recommand 01 with signature “one”.
Load a Voice Record or Records to Recognizer (30)
Load records(1~7) to recognizer of VR3, after execution the VR3 starts to recognize immediately.
Format:
| AA| 3+n | 30 | R0 | ... | Rn | 0A |
Return:
| AA| 3+2n | 30 | N | R0 | STA0 | ... | Rn | STAn | 0A |
Description
Voice Record index
Load result
00 -- Success
FF -- Record value out of range
FE -- Record untrained
FD -- Recognizer full
FC -- Record already in recognizer
Number of successful training voice commands
Example:
Load Voice command 00 01 02 to recognizer.
The yellow LED will flash slowly.
Clear Recognizer (31)
Stop recognizing, and empty recognizer of Voice Recognition Module. Format:
| AA | 02 | 31 | 0A |
Return:
| AA | 03 | 31 | 00 | 0A |
Example:
Yellow LED will light on.
Group Control (32)
Groups are used to load commands into recognizer by external pins.
IN0
IN1
IN2
Group loaded
LOW
LOW
LOW
00
HIGH
LOW
LOW
01
LOW
HIGH
LOW
02
HIGH
HIGH
LOW
03
LOW
LOW
HIGH
04
HIGH
LOW
HIGH
05
LOW
HIGH
HIGH
06
HIGH
HIGH
HIGH
07
There are two kinds of groups: System Group and User Group
While you training voice commands, each command has an unique ID. System Groups are divided by
those IDs.
However, User Group allows you to set up a group in any way you want.
Group select
Set group control mode (disable, system, user), if group control function is enabled (system or user),
then voice recognition module is controlled by the external control IO.
Format:
| AA| 04 | 32 | 00 | MODE | 0A |
MODE:
Return:
| AA| 03 | 32 | 00 | 0A |
or
| AA| 05 | 32 | 00 | FF | MODE | 0A | (check command return)
Description
MODE
New group control mode.
00-disable
01-system
02-user
FF-check
Example:
check the status of group control
Set/Delete user group
Set user group content(record).
Format:
| AA| 03 | 32 | 01 | UGRP | 0A | (Delete UGRP)
| AA| LEN | 32 | 01 | UGRP | R0 | ... | Rn | 0A | (Set UGRP)
Return:
| AA| 03 | 32 | 00 | 0A | (Success return)
Description
UGRP
user group number
R0~Rn
record index number
n=0,1,...
Max 7 voice records
Example:
Set Group 00 with Voice command 00, 01, 02
Load system group
Load system group to recognizer, this command would clear recognizer.
Format:
| AA| 04 | 32 | 02 | SGRP | 0A |
Return:
| AA| 0D | 32 | SGRP | VRI0 | VRI1 | VRI2 | VRI3 | VRI4 | VRI5 | VRI6 | RTN | VRMAP | GRPM | 0A |
Description
SGRP
system group number
VRIn
n=0~6
Record which is in recognizer, n is recognizer index value
RTN
Number of total records in recognizer.
VRMAP
Valid record bit map for VRI0~VRI6
GRPM
Group mode indicate. (00~0A-system group)
Example:
In the example, VRMAP is 0x07. That is 0000111. So command index 00, 01, 02 is valid.
Load user group
Load user group to recognizer, this command would clear recognizer.
Format:
| AA| 04 | 32 | 03 | UGRP | 0A |
Return:
| AA| 04 | 32 | UGRP | VRI0 | VRI1 | VRI2 | VRI3 | VRI4 | VRI5 | VRI6 | RTN | VRMAP | GRPM | | 0A |
Description
UGRP
user group number
VRIn
n=0~6
Record which is in recognizer, n is recognizer index value
RTN
Number of total records in recognizer.
VRMAP
Valid record bit map for VRI0~VRI6
GRPM
Group mode indicate. (00~0A-system group)
Check user group
Check user group content.
Format:
| AA| 03 | 32 | 04 | 0A | (check all user group)
or
| AA| LEN | 32 | 04 | UGRP0| ... | UGRPn | 0A | (check user group)
Return:
| AA | 0A | 32 | UGRP | R0 | R1 | R2 | R3 | R4 | R5 | R6 | 0A |
Description
UGRP
user group number
R0~R6
voice command record index.
Prompt (0A)
0A code only occurs in return data for training command.
Format:
NONE
Return:
| AA | 07 | 0A | RECORD | PROMPT | 0A |
RECORD: record which is in training
PROMPT: prompt string
Description
RECORD
user group number
PROMPT
prompt string
Voice Recognized (0D)
0D code only occurs in the return data while voice command is recognized.
Format:
NONE
Return:
| AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |
Description
GRPM
Group mode indicate
FF: not in group mode
00~0A: system group mode
80~87: user group mode
R
record which is recognized.
RI
recognizer index value for recognized record.
SIGLEN
signature length of the recognized record, 0 means on signature, on SIG area
SIG
signature content
Error (FF)
Error command is only used for Voice Recognition Module to return error status.
Format:
NONE
Return:
| AA | 03 | FF | ECODE | 0A |
Description
ECODE
error code
FF -- command undefined
FE -- command length error
FD -- data error
FC -- subcommand error
FB -- command usage error
DisclaimerandRevisions
The information in this document may change without notice.
Revision History
Rev.
Date
Author
Description
A
Sep. 29th, 2011
Wilson Shen
Initial version
B
Mar. 4th, 2013
Wilson Shen
V2
C
May.9th, 2014
Wilson Shen
V3

Navigation menu