字典结构设计
一、数据文件
字典数据文件有两个:DictSpch.bin和DictSnd.bin
(文件名有点混,太相近了,不易区分具体内容。因为最初我们 V1版本字典只有词头和解释,当时就一个文件,名叫Dict.bin;后来V2版要加发音功能 ,文件名改为DictSpch.bin,结果又发现声音数据太大,在sd文件系统中放不下,声音数据又被单独抽出来放到隐藏盘,名叫DictSnd.bin)
-
DictSpch.bin,字典数据(词头、词义)部份,是必须的,缺少的话,字典没法运行;
-
DictSnd.bin,声音数据部份,可选,缺少的话,只是无发声,但字典可正常查阅词义;
-
DictSpch.bin和DictSnd.bin必须配套使用,即它们ID必须相同,否则不会发声;
二、声音数据的结构
声音数据,即DictSnd.bin文件中存储的数据
1.数据标识ID
ID区域是为了与词头数据相匹配而加的数据区域,避免不同版本的词头与发声的混用造成错误而加入的。
ID区的数据结构:
实例
2.wav 参数
wav参数包括:通道数、采样率、采样宽度,这是发声函数需要的重要参数。所有词头使用相同参数。
wav参数结构
实例
可以看出:
通道数:0x0001,即1个通道(单通道)
采样率:0x3E80 =
16000,即16K
采样宽度:0x0020,2字节,即16bit
3.发声数据
发声数据结构很简单,就是各个单词的wav声音数据,一个一个的顺序排列。
单条数据结构
实例
长度:0x00004B1A
= 19226,即从0x10开始,19226字节的数据都是同一个单词的声音数据。
在词头的信息(DictSpch.bin)中,会保存该词头对应声音数据的偏移地址,如0x12,则可跳到D