1 简介
本示例展示了一种个性化、自主学习且与语言无关的单词识别解决方案。本示例包含文档和相关程序演示了如何使用 VS1005 通过神经网络识别任何语言的单词的解决方案。
在第 2 章免责声明之后,第 3 章介绍了运行单词识别所需的硬件要求和单词集文件。第 4 章列出示例所包含的执行程序文件,第 5 章描述了执行程序文件处理过程。第 6 章介绍了完整的操作过程,第 7 章介绍了执行程序参数设置。第 8 章解释了演示过程中的所有相关文件和文件格式。
本文档以第 9 章版本历史和第 10 章联系信息作结束。
2 免责声明
VLSI Solution 將尽其所能使本文档內容尽可能准确,对本文档的正确性不作任何保证或担保。
3 硬件要求
硬件需要使用 VS1005 开发板或 VS1005 BreakOut 板,可以使用板上的麦克风或外接麦克风,外接麦克风可连接到 Line IN 代替板上的麦克风。
MY.TXT 文件包含需要识别的单词集,单词集可以存放 2-16 个单词用以被识别,每个单词由 1-8个字符所组成,单词之间由空格、制表符或换行符相互分隔。
本示例將使用 PETS 文件名代替 MY 文件名,PETS.TXT文件可以从 zip 文件中找到,PETS 文件名可以更改为任意的文件名。
4 示例程序
单词识别示例包含四个独立执行程序:
WordSave 存储语音样本及其类別
WordTrans 对输入到神经网络的语音样本进行预处理
WordTrain 反向传播算法以查找神经网络权重和偏置
WordDet 使用经过神经网络训练的语音样本识别单词
程序可以从 zip 文件中找到,Zip 文件中还包含 WordSave 和 WordDet 程序源代码。
5 程序处理流程
图 1:示例中使用的程序和文件处理流程
6 示例演示流程
执行程序默认路径为 S:SYS/,程序(WordSave、WordTrans、WordTrain 和 WordDet)必须从 zip 中解压并复制到 S:SYS/ 目录內,更多信息可以在 VS1005 VSOS Shell 文档中找到。安装和设置 VSOS Shell 环境可參考官方文档 https://www.vlsi.fi/fileadmin/software/VS1005/VSOS_Shell.pdf
先将本示例的 PETS.TXT 文件储存到记忆卡中(D:)。注意默认的系统磁盘 (S:) 没有足够的空间进行储存!
S:CONFIG.TXT 应包含以下语句:
# Activate appropriate audio input driver
AUIADC s
# Add the following line if you need an automatic gain control
# to make word recognition work
FTIAGC
# Set audio input to correspond with your hardware.
# Example is for VS1005 Breakout Board
#RUN AuInput -r8000 line1_1 line1_2 dec6
# Example is for VS1005 Developer Board
#RUN AuInput -r8000 line1_1 line1_3 dec6
# Alternative audio input example for VS1005 Developer Board
RUN AuInput -r8000 mic1 mic2 dec6
# If using AGC driver, find values that work
RUN SetAgc -min 0 -max 30
如果不从 config.txt 中启动驱动程序,则可以从命令行执行相同操作:
S:>Driver +AUIADC s
S:>Driver +FTIAGC
S:>AuInput -r8000 mic1 mic2 dec6
S:>SetAgc -min 0 -max 30
输入命令和程序输出均显示在模拟终端窗口中。如果需要在开发板的 LCD 上显示相同信息,则可以加入以下驱动程序。
S:CONFIG.TXT 应包含以下语句:
# Activate LCD
LCD288
# Use LCD for stdin/stdout
LCDCON
同样地,如果不在 config.txt 中启动驱动程序,可以从命令行执行相同操作:
S:>Driver +LCD288
S:>Driver +LCDCoN
如果缺少上列驱动程序,可以在 VLSI Solution VSDSP Forum 下载。此处提供最新的 VSOS 内核 (3.65)下载
http://www.vsdsp-forum.com/phpbb/viewtopic.php?f=13&t=680&start=102
以下命令将执行整个示例以识别与 PETS 相关的单词。因示例默认单词集为 PETS,因此可加入后缀參数“-w PETS”。
S:>cd D:
D:>WordSave -w PETS
D:>WordTrans -w PETS
D:>WordTrain -w PETS
D:>WordDet -w PETS
或使用以下格式
S:>WordSave -w D:PETS
S:>WordTrans -w D:PETS
S:>WordTrain -w D:PETS
S:>WordDet -w D:PETS
7 详细程序说明
7.1 WordSave
Usage: WordSave [-w PETS] [-a] [-n sets] [-l1-r] [-h]
-w Read words from PETS.TXT file (default)
-a Continue (append) already stored audio and class files
-n Every word is requested and saved 'sets' time (default 32767)
CTRL-C can be pressed to stop recording
-l Left channel from the microphone is used
-r Right channel from the microphone is used (default)
-h Show this help
存储语音样本及其类別用以进行训练。
接收来自麦克风的输入(语音单词)
创建 PETS.WDS (语音单词)文件供 WordTrans 预处理用
创建 PETS.CLS (单词类別)文件供 WordTrain 反向传播算法用
录音过程需多次对麦克风说出特定单词,过程中可以按 CTRL-C 来停止录音。如果未使用 CTRL-C 来停止录音,则 WordTrans 和 WordTrain 将识别为类别。
建议根据单词的数量和单词的相似度,对每个单词进行 3 到 12 次训练以达到适当的识别准确性。
注意!在进行识别训练过程中应对已存储的 WDS 和 CLS 文件备份,以避免语音样本及其类別的数据丢失。
7.2 WordTrans
Usage: WordTrans [-w PETS] [-n count] [-h]
-w Read words from PETS.TXT file (default)
-n 'count' words from input file are used (default all = 32767)
-h Show this help
对输入到神经网络的语音样本迸行预处理。
读取来自 WordSave (语音单词)的 PETS.WDS 文件
创建 PETS.TRA 文件(高頻率单词)供 WordTrain 使用
7.3 WordTrain
Usage: WordTrain [-w PETS] [-n count] [-h]
-w Read words from PETS.TXT file (default)
-n 'count' words from input file are used (default all = 32767)
-h Show this help
执行反向传播算法以查找神经网络权重和偏置。
读取经过 WordTrans 后的 PET.TRA (高频率单词)(BE) 文件
读取经过 WordSave 的 PET.CLS (单词类别)(BE) 文件
可读取 PETS.NNS(启动网络权重)文件,如果没有启动网络权重文件,则启动网络权重将从随机值开始进行训练
创建 PETS.NNW(网络)文件供 WordDet 使用
创建 PETS.NNI(训练中的启动网络)文件
在训练过程中程序会提示经神经网络识别的成功率。成功率將显示在训练开始时和训练结束后。第一个百分比显示所有输出的平均成功率,第二个值为正确识别单词的百分比。
7.4 WordDet
Usage: WordDet [-w PETS] [-n maxcount] [-l1-r] [-h]
-w Read words from PETS.TXT file (default)
-n Maximum count of recognized words (default 32767)
CTRL-C can be pressed to stop recognition
-l Left channel from the microphone is used
-r Right channel from the microphone is used (default)
-h Show this help
使用经过神经网络训练的语音样本识别单词。
接收来自麦克风的输入(语音单词)
读取来自 WordTrain 的 PETS.NNW(神经网络)文件
写入 PETS.TWS(临时语音单词)文件
识别过程中需要对麦克风说出任何特定的单词,识别过程中可以按 CTRL-C 來停止。
识别过程中也会提示已识别的单词及其成功率。当识别不够确定时,則会显示最有可能的两个单词及其成功率。
8 文件和文件格式
所有文件都没有文件头。
PETS.TXT:包含被识别的单词
单词文件为 Ascii 格式,单词由空格、制表符或换行符相互分隔。
单词将按照它们在文件中的顺序进行索引 - 从零开始。
PETS.WDS 和 PETS.TWS:包含语音单词
二进制文件包含每个语音单词的 8000 个 s_int16(大端序)样本。
以 8 kHz 采样率进行语音录制 -> 每秒 1 个语音单词。
PETS.CLS:包含语音单词类别
二进制文件包含每个语音单词的一个 s_int16(大端序)值。
PETS.TRA:包含已预处理的语音单词(神经网络输入)
二进制文件包含每个口语单词的 320 个 s_int16(大端序)值。
PETS.TC 和 PETS.TW:临时文件
二进制文件存储的数据与 PETS.CLS 和 PETS.TRA 相同。
文件可留作日后使用,也作为数据备份(如在语音单词录制时出現错误)。
PETS.NNW:包含训练后的网络权重和偏置
二进制文件包含 s_int16(大端序)权重和偏置供所有网络神经元用。
PETS.NNI:包含训练开始时使用的网络权重和偏置
二进制文件包含 s_int16(大端序)权重和偏置供所有网络神经元用。
PETS.NNS:包含网络权重和偏置
可选的二进制文件,可在训练开始时使用的网络权重和偏置。
注意!PETS.NNI 可实现重复结果和 PETS.NNW 更快的收敛。
9 版本历史
本章介绍本文档的最新更改。
版本 1.01, 2022-11-28
- 更新示例演示流程,包括文档链接和 LCD 屏幕使用。
版本 1.00, 2022-11-03
- 初始版本。