CN112749550B - 数据存储方法、装置、计算机设备及存储介质 - Google Patents
数据存储方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112749550B CN112749550B CN202010673829.3A CN202010673829A CN112749550B CN 112749550 B CN112749550 B CN 112749550B CN 202010673829 A CN202010673829 A CN 202010673829A CN 112749550 B CN112749550 B CN 112749550B
- Authority
- CN
- China
- Prior art keywords
- data
- state
- state transition
- states
- probability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 137
- 238000013500 data storage Methods 0.000 title claims abstract description 40
- 230000007704 transition Effects 0.000 claims abstract description 190
- 230000015654 memory Effects 0.000 claims abstract description 33
- 238000012545 processing Methods 0.000 claims description 21
- 238000012163 sequencing technique Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 2
- 230000002829 reductive effect Effects 0.000 abstract description 22
- 230000001976 improved effect Effects 0.000 abstract description 6
- 230000000875 corresponding effect Effects 0.000 description 85
- 230000008569 process Effects 0.000 description 65
- 238000005516 engineering process Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 20
- 238000013473 artificial intelligence Methods 0.000 description 15
- 238000013507 mapping Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 7
- 241000282414 Homo sapiens Species 0.000 description 6
- 238000003058 natural language processing Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000011160 research Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000006837 decompression Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000012528 membrane Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/242—Dictionaries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/18—Speech classification or search using natural language modelling
- G10L15/183—Speech classification or search using natural language modelling using context dependencies, e.g. language models
- G10L15/19—Grammatical context, e.g. disambiguation of the recognition hypotheses based on word sequence rules
- G10L15/197—Probabilistic grammars, e.g. word n-grams
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种数据存储方法、装置、计算机设备及存储介质,属于计算机技术领域。本申请实施例中,对于语音识别模型的至少两组状态转移数据,对输入数据、输出数据和状态转移后的第二状态的状态标识进行编码时,根据这些数据的出现频次进行编码,一种数据的编码数据的长度与数据的出现频次负相关,相较于等长编码中编码数据长度固定的方式,根据出现频次进行可变字长方式的编码,减少了编码数据中的冗余部分,降低了编码数据的数据量,对概率数据进行编码得到编码数据,以状态转移前的第一状态的状态标识作为索引来存储编码数据,减少了模型数据所占用的存储空间和内存,降低为设备的性能所带来的影响,提高了模型数据的存储效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据存储方法、装置、计算机设备及存储介质。
背景技术
语音识别技术是指机器通过识别和理解的过程,将语音信号转变为相应的文本或命令的技术。通常地,在进行语音识别时会采用语音识别模型来实现。语音识别模型通常会存储在设备中,在需要进行语音识别时,再使用语音识别模型对语音信号进行处理。
在对语音识别模型进行存储时,通常会采用存储该语音识别模型的状态机中的边的方式存储,如果将每条边的五种数据按照32位来存储,则每条边占用160位空间。如果语音识别模型更大,状态标识需要采用64位进行存储,则每条边占用224位空间。这样单说用于将字词映射为语句的语言模型,边数通常为1e9数量级,语音模型占用的存储空间则高达几十吉字节(GB)大小。
目前,对模型数据进行存储时,该语音识别模型的模型数据即为至少两组状态转移数据,对于至少两组状态转移数据中除了第一状态的状态标识之外的其他数据,通过等长编码的前向星数据结构进行存储,并存储第一状态的状态标识与等长编码后的编码数据的索引关系。
通过上述等长编码后存储的方式,语音识别模型的编码数据所占用的存储空间依然很大,也会使得内存的负载较高,可能会影响算法运算的稳定性,增大触发OOM(Out OfMemory,内存不足)的概率。因而,上述数据存储方法的存储效率低,占用的存储空间和内存大,对设备的性能影响大。
发明内容
本申请实施例提供了一种数据存储方法、装置、计算机设备及存储介质,能够减少模型数据所占用的存储空间和内存,降低为设备的性能所带来的影响,提高模型数据的存储效率。
该技术方案如下:
一方面,提供了一种数据存储方法,该方法包括:
获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前后两个状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据;
根据所述至少两组状态转移数据中所述输入数据、输出数据和第二状态的状态标识的出现频次,对所述输入数据、输出数据和第二状态的状态标识进行编码,得到所述输入数据、输出数据和第二状态的状态标识的编码数据,一种数据的编码数据的长度与所述数据的出现频次负相关;
对所述概率数据进行编码,得到所述概率数据的编码数据;
以所述至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述编码数据。
在一种可能实现方式中,所述解码指令为其他计算机设备发送的指令;或所述解码指令由接收到语音信号触发。
一方面,提供了一种数据存储装置,该装置包括:
获取模块,用于获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前后两个状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据;
编码模块,用于根据所述至少两组状态转移数据中所述输入数据、输出数据和第二状态的状态标识的出现频次,对所述输入数据、输出数据和第二状态的状态标识进行编码,得到所述输入数据、输出数据和第二状态的状态标识的编码数据,一种数据的编码数据的长度与所述数据的出现频次负相关;
所述编码模块,还用于对所述概率数据进行编码,得到所述概率数据的编码数据;
存储模块,用于以所述至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述编码数据。
在一种可能实现方式中,所述编码模块包括排序单元和编码单元;
所述排序单元用于根据状态转移数据中各种数据的排列顺序,对所述至少两组状态转移数据进行排序;
所述编码单元用于按照排序结果,依次对所述至少两组状态转移数据执行编码步骤,得到所述至少两个第一状态对应的编码数据。
在一种可能实现方式中,一组状态转移数据中各种数据按照排列顺序为第一状态的状态标识、第二状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据;
所述排序单元用于以所述状态转移数据中各种数据的排列顺序为排序优先级,依次按照所述各种数据对所述至少两组状态转移数据进行排序。
在一种可能实现方式中,所述编码模块用于:
获取所述至少两组状态转移数据所述输入数据、输出数据和第二状态的状态标识的出现频次;
以输入数据、输出数据和第二状态的状态标识的值为结点,以一种数据的值的出现频次为所述数据的值的结点权值,分别构造所述输入数据、输出数据和第二状态的状态标识对应的树,所述树的任一结点与根结点的距离与所述结点的结点权值负相关;
根据所述输入数据、输出数据和第二状态的状态标识对应的树,对所述输入数据、输出数据和第二状态的状态标识进行编码,得到对应的编码数据。
在一种可能实现方式中,所述树为k叉树,所述k为大于或等于2的正整数。
在一种可能实现方式中,所述编码模块用于执行下述任一项:
根据所述概率数据的出现频次,对所述概率数据进行编码,得到所述概率数据的编码数据;
将所述概率数据转化为目标位数的二进制编码,将所述二进制编码作为所述概率数据的编码数据。
在一种可能实现方式中,所述存储模块包括第一存储单元和第二存储单元;
所述第一存储单元用于存储所述至少两个第一状态对应的编码数据;
所述第二存储单元用于创建并存储所述至少两个第一状态的状态标识与所述至少两个第一状态对应的编码数据之间的索引信息。
在一种可能实现方式中,所述第一存储单元用于:
对所述至少两个第一状态对应的编码数据进行拼接;
将拼接后的编码数据写入第一模型文件,存储所述第一模型文件。
在一种可能实现方式中,所述第二存储单元用于:
创建所述至少两个第一状态的状态标识与所述至少两个第一状态对应的编码数据的首个比特位置之间的索引信息,所述索引信息中一个第一状态的状态标识与所述第一状态对应的编码数据的首个比特位置之间具有索引关系;
将所述索引信息写入第二模型文件,存储所述第二模型文件。
在一种可能实现方式中,所述语音识别模型包括至少一个语音识别模块;一个语音识别模块对应至少两组状态转移数据;
所述编码模块,用于对于所述至少一个语音识别模块中一个语音识别模块,根据所述语音识别模块的目标至少两组状态转移数据中所述输入数据、输出数据和第二状态的状态标识在所述目标至少两组状态转移数据中的出现频次,对所述输入数据、输出数据和第二状态的状态标识进行编码,得到所述输入数据、输出数据和第二状态的状态标识的编码数据;
所述编码模块,还用于对所述目标至少两组状态转移数据中所述概率数据进行编码,得到所述概率数据的编码数据;
所述存储模块,用于以所述目标至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述至少两个第一状态对应的编码数据对应的编码数据作为所述语音识别模块的编码数据。
在一种可能实现方式中,所述至少一个语音识别模块包括第一语音识别模块、第二语音识别模块、第三语音识别模块和第四语音识别模块;所述第一语音识别模块用于将声学特征识别为对应的三音子,所述第二语音识别模块用于将三音子识别为对应的单音素,所述第三语音识别模块用于将单音素识别为字词,所述第四语音识别模块用于将字词识别为语句。
在一种可能实现方式中,所述装置还包括:
读取模块,用于响应于解码指令,以当前解码所处目标状态的状态标识为索引,从存储数据中读取所述目标状态对应的编码数据;
解码模块,用于对所述目标状态对应的编码数据进行解码。
在一种可能实现方式中,所述解码指令为其他计算机设备发送的指令;或所述解码指令由接收到语音信号触发。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的数据存储方法。
一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的数据存储方法。
一方面,提供一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括一条或多条程序代码,所述一条或多条程序代码存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条程序代码,所述一个或多个处理器执行所述一条或多条程序代码,使得计算机设备能够执行上述任一种可能实施方式的数据存储方法。
本申请实施例中,对于语音识别模型的至少两组状态转移数据,对输入数据、输出数据和状态转移后的第二状态的状态标识进行编码时,根据这些数据的出现频次进行编码,一种数据的编码数据的长度与所述数据的出现频次负相关,这样考虑到数据的出现频次,通过出现频次来影响编码数据的长度,对于出现频次大的数据,编码数据的长度小,对于出现频次小的数据,编码数据的长度大,相较于等长编码中每种数据的编码数据长度固定的方式,根据出现频次进行可变字长方式的编码,大大减少了编码数据中的冗余部分,降低了编码数据的数据量,对概率数据进行编码得到编码数据,以状态转移前的第一状态的状态标识作为索引来存储编码数据,能够有效减少模型数据所占用的存储空间和内存,降低数据存储为设备的性能所带来的影响,且数据量减少也会提高模型数据的存储效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据存储方法的实施环境的示意图;
图2是本申请实施例提供的一种数据存储方法的实施环境的示意图;
图3是本申请实施例提供的一种数据存储方法的流程图;
图4是本申请实施例提供的一种数据存储方法的流程图;
图5是本申请实施例提供的一种语音识别模型的结构示意图;
图6是本申请实施例提供的一种声学模型和语音模型的有向图的示意图;
图7是本申请实施例提供的一种对一组状态转移数据进行排序后的示意图;
图8是本申请实施例提供的一种哈夫曼树的示意图;
图9是本申请实施例提供的一种状态转移数据处理时的示意图;
图10是本申请实施例提供的一种在线解码过程的示意图;
图11是本申请实施例提供的一种终端界面示意图;
图12是本申请实施例提供的一种终端界面示意图;
图13是本申请实施例提供的一种终端界面示意图;
图14是本申请实施例提供的一种终端界面示意图;
图15是本申请实施例提供的一种用户与控制中心的语音交互示意图;
图16是本申请实施例提供的一种数据存储装置的结构示意图;
图17是本申请实施例提供的一种终端的结构示意图;
图18是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个处理器是指两个或两个以上的处理器。“至少两组”是指一组或多组,“多组”的含义是指两组或两组以上,例如,至少两组状态转移数据是指两组或两组以上的状态转移数据。
下面对本申请涉及到的名词进行解释说明。
哈夫曼编码(Huffman Coding):又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码的一种。该方法依据字符、文字或数字出现概率来构造异字头的码字,编码后码字的平均长度最短,因而有时也称之为最佳编码。
哈夫曼树(Huffman Tree):以二叉树为例,给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。其中,N为正整数。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。构造哈夫曼树的目的在于找出存放一串字符所需的最少的二进制编码。
哈夫曼树也可以是k叉的,构造哈夫曼树的思想是每次选k个权重最小的元素来合成一个新的元素,该元素权重为k个元素权重之和。k为大于或等于2的整数。
对于二叉树,二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单。二叉树特点是每个结点最多只能有两棵子树,且有左右之分。
二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。也即是,n为0或正整数。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。
结点:包含一个数据元素及若干指向子树分支的信息。
叶子结点:也称为终端结点,没有子树的结点或者度为零的结点。
树的深度:也称为树的高度,树中所有结点的层次最大值称为树的深度。
有序树:如果树中各棵子树的次序是有先后次序,则称该树为有序树。
无序树:如果树中各棵子树的次序没有先后次序,则称该树为无序树。
森林:由m(m≥0)棵互不相交的树构成一片森林。如果把一棵非空的树的根结点删除,则该树就变成了一片森林,森林中的树由原来根结点的各棵子树构成。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
语音技术(Speech Technology)的关键技术有自动语音识别技术(ASR)和语音合成技术(TTS)以及声纹识别技术。让计算机能听、能看、能说、能感觉,是未来人机交互的发展方向,其中语音成为未来最被看好的人机交互方式之一。
自然语言处理(Nature Language processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、示教学习等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。本申请实施例提供的方案涉及人工智能的语音技术、自然语言处理和机器学习等技术,具体涉及语音技术中的语音识别技术,涉及到的语音识别模型则通过机器学习的方式训练得到,能够用于进行各种场景下的语音识别,对自然语言进行处理。下面对语音技术中的相关名词进行解释说明。
语音识别(Speech Recognition):即机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。
嵌入式语音识别(Embedded speech recognition):把语音识别算法嵌入到计算机设备从而语音识别不依赖于网络的技术。
WFST(Weighted Finite State Transducer):加权有限状态机,是表示有限个状态以及这些状态之间的转移和动作等行为的数学模型。它是一个有向图,状态转移边上有输入符号、输出符号以及对应的权重值,可对声学模型、发音词典、语言模型进行建模。
前向星(Forward Star):存储图的一种数据结构,以存储边的方式来存储图,通过对全部边进行排序,并记录每个点出去的第一条边位置来完成图的索引。
语音特征(Speech Feature):通过一些信号处理技术,从输入的语音信号中提取的特征,通过特征向量的表示形式供声学模型处理,以尽可能降低环境噪声、信道、说话人等因素对识别造成的影响。
音素(Phone):一种语言包含的最小发音单元称为音素,类似汉语中汉语拼音包含的声母和韵母。
三音子(Triphone):由于人发音器官的渐变性,每一个音素实际发声都和前面后面的音素有关系,“前文音素+中心音素+后文音素”协同发音构成三音子。
HMM(Hidden Markov Model):隐马尔可夫模型是一种统计分析模型,用来描述一个含有隐含未知参数的马尔可夫过程,在语音识别中针对三音子进行建模。
声学模型(Acoustic Model):语音特征到音素映射概率的计算模型,音素是根据语音的自然属性划分出来的最小语音单位。
发音词典(Pronunciation Dictionary):发音词典包含系统所能处理的词汇集及其发音,提供了声学模型建模单元与语言模型建模单元间的映射。
语言模型(Language Model):词语到词串映射概率的计算模型,可以对一段文本的概率进行估计,来表示其存在的可能性。
解码器(Decoder):解码器是语音识别系统的核心之一,负责系统的解码流程,其任务是对输入的信号,根据声学、语言模型及发音词典,寻找能够以最大概率输出该信号的词串。
无损压缩:是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真的技术。压缩率受到数据统计冗余度的理论限制,一般为2:1到5:1。
OFFSET函数是常用的引用函数之一,主要用于从指定的基准位置按行列偏移量返回指定的引用。
图1和图2是本申请实施例提供的一种数据存储方法的实施环境的示意图。
参见图1,该实施环境包括终端101,该终端101能够下载或接收其他计算机设备发送的语音识别模型的模型数据,对模型数据进行存储,可选地,该语音识别模型的模型数据也能够由相关技术人员预置于该终端101中。
该终端101具有语音采集和语音识别功能。具体地,终端101能够采集语音信号,根据存储的语音识别模型对语音信号进行语音识别。
参见图2,该实施环境包括终端201和服务器202,该终端201和服务器202通过有线网络或无线网络进行直接或间接地连接,二者通过连接进行数据交互,本申请在此不做限制。
可选地,终端101或终端201是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
可选地,服务器202是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
在本申请实施例中,数据存储方法应用于终端201或服务器202。该方法应用于终端201时,终端201能够从服务器202获取模型数据,并对模型数据进行存储,与上述图1所示的内容同理。
该方法应用于服务器202时,服务器202能够获取到语音识别模型的模型数据,对该模型数据进行存储。服务器202能够基于存储的语音识别模型,为终端201提供语音识别服务。具体地,终端201在有语音识别需求时,能够向服务器201发送语音识别的相关请求或指令,服务器接收到语音识别的相关请求或指令,能够基于语音识别模型对请求或指令携带的语音信号进行语音识别,返回语音识别结果。
图3是本申请实施例提供的一种数据存储方法的流程图。该数据存储方法应用于计算机设备中,该计算机设备为上述图1所示的终端101,或者该计算机设备为上述图2所示的终端201或服务器202,本申请实施例对此不作限定。参见图3,该实施例包括:
301、计算机设备获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前后两个状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据。
语音识别模型为一种用于将语音信号转化为文本或命令的模型,计算机设备可以将语音信号输入该语音识别模型,该语音识别模型能够对语音信号进行特征提取,对提取到的语音特征进行映射,确定出语音特征对应的词串(也即语句),输出语音识别结果。
可选地,根据语音识别模型的功能特性,能够将该语音识别模型看做为一个或多个状态机,该语音识别模型的模型数据为至少两组状态转移数据。例如,语音识别模型为静态网络WFST解码器,WFST是一个有向图,对有向图进行存储时能够采用存储有向图中的边的方式实现,记录WFST的数据则为所有边的数据。对于一条边,该边能够表示一次状态转移,记录该边的数据包括五种数据:状态转移前后的两个状态的状态标识、输入数据、输出数据和概率数据。
相应地,一组状态转移数据包括状态转移前后两个状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据。对于状态转移前后的两个状态,在此将状态转移前的状态称为第一状态,状态转移后的状态称为第二状态,在处于第一状态时输入该输入数据时,能够输出该输出数据,并将状态转移至第二状态,且概率为该概率数据。
可选地,该状态转移数据包括五种数据,一组状态转移数据通过五元组来表示,至少两组状态转移数据即为五元组的集合。例如,一组状态转移数据为五元组{StateIdFrom,StateIdTo,ilabel,olabel,weight}。其中,StateIdFrom为状态转移前状态的状态标识,也即是第一状态的状态标识。StateIdTo为状态转移后状态的状态标识,也即是第二状态的状态标识。ilabel为输入数据。olabel为输出数据,weight为权重,也即是概率数据。
计算机设备获取到至少两组状态转移数据后,可以对其进行编码后存储编码数据。根据解码过程中状态转移的特性,当前解码所处的状态已知,根据当前状态去确定转移后的状态,则需要根据已知的当前状态去提取转移后的数据,因而,可以将当前状态作为索引(具体将状态转移前的状态标识作为索引),将转移后的数据进行编码后存储,这样减少编码的数据量,提高存储效率,且根据索引能够直接提取到对应数据,这样的存储方式也能避免全部提取后一一对比的过程,加快解码速度。
对于需要编码的输入数据、输出数据、第二状态的状态标识以及概率数据,在本申请实施例中,能够采用同一种编码方式对这些需要编码的数据进行编码,也能够考虑到这些数据的数据类型不同,采用不同的编码方式进行编码。
下面通过302和步骤303,分别对输入数据、输出数据、第二状态的状态标识的编码过程,和对概率数据的编码过程进行说明。在一种可能实现方式中,采用同一种编码方式对输入数据、输出数据、第二状态的状态标识以及概率数据进行编码。也即是,步骤303中对概率数据的编码过程与步骤303所示的编码过程同理。在另一种可能实现方式中,考虑到该概率数据一般为浮点数,其数据类型为float(浮点型数据类型),与其他数据的数据类型不同,采用一种编码方式对输入数据、输出数据、第二状态的状态标识进行编码,用另一种编码方式对概率数据进行编码。也即是,步骤303采用另一种编码方式对概率数据进行编码,与步骤302中根据出现频次进行编码的方式不同。
302、计算机设备根据该至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识的编码数据,一种数据的编码数据的长度与该数据的出现频次负相关。
该输入数据、输出数据和第二状态的状态标识为不同的数据,每种数据在不同的状态转移中值也不同,不同值的出现频次并不相同,某些值的出现频次很大,某些值的出现频次很小。例如,以字词为例,一些常用字(例如“的”)的出现频次比较大,一些生僻字(例如“犇”)的出现频次比较小,在此仅为一种示例性说明,并不对本申请造成限定。
计算机设备对输入数据、输出数据和第二状态的状态标识进行编码时考虑到了这些数据的出现频次,以此来进行可变字长的编码,不同数据的编码数据的长度可以相同,可以不同。
可以理解地,相关技术中等长编码中所有数据的编码长度固定且相同,编码数据中则会存在很多冗余。通过可变字长的编码,一种数据的编码数据的长度与该数据的出现频次负相关,也即是,对于出现频次大的数据,编码数据的长度小,对于出现频次小的数据,编码数据的长度大。这样在这些数据中数量更多的数据,其编码数据的长度变小,减少了编码数据中的冗余部分,这些数据的整体编码数据的数据长度大大减小,能够有效减少编码数据的数据量,能够减少对计算机设备的存储空间和内存的占用,也能提高数据存储时的存储效率。
303、计算机设备对该概率数据进行编码,得到该概率数据的编码数据。
该步骤303中对概率数据的编码方式可以采用上述步骤302所示的编码方式,也可以直接将概率数据转化为目标位数的编码,本申请实施例对具体采用哪种方式不作限定。
304、计算机设备以该至少两组状态转移数据中至少两个第一状态的状态标识作为该至少两个第一状态对应的编码数据的索引,存储该编码数据。
计算机设备对状态转移后的数据进行编码得到编码数据后,能够以状态转移前状态的状态标识作为索引进行存储,该状态转移前状态即为第一状态,这样通过索引即可根据第一状态的状态标识,查询到第一状态发生状态转移后的第二状态的状态标识以及该状态转移的其他相关数据(输入数据、输出数据和概率数据)。通过索引以及编码数据,即可完成解码过程的状态转移过程,来实现语音识别的功能。
本申请实施例中,对于语音识别模型的至少两组状态转移数据,对输入数据、输出数据和状态转移后的第二状态的状态标识进行编码时,根据这些数据的出现频次进行编码,一种数据的编码数据的长度与该数据的出现频次负相关,这样考虑到数据的出现频次,通过出现频次来影响编码数据的长度,对于出现频次大的数据,编码数据的长度小,对于出现频次小的数据,编码数据的长度大,相较于等长编码中每种数据的编码数据长度固定的方式,根据出现频次进行可变字长方式的编码,大大减少了编码数据中的冗余部分,降低了编码数据的数据量,对概率数据进行编码得到编码数据,以状态转移前的第一状态的状态标识作为索引来存储编码数据,能够有效减少模型数据所占用的存储空间和内存,降低数据存储为设备的性能所带来的影响,且数据量减少也会提高模型数据的存储效率。
图4是本申请实施例提供的一种数据存储方法的流程图。该数据存储方法应用于计算机设备中,该计算机设备为上述图1所示的终端101,或者该计算机设备为上述图2所示的终端201或服务器202,本申请实施例对此不作限定。参见图4,该实施例包括:
401、计算机设备获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前后两个状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据。
在本申请实施例中,计算机设备可以获取该语音识别模型的模型数据,对模型数据进行存储。该模型数据为至少两组状态转移数据,通过对至少两组状态转移数据进行编码,存储编码数据,能够实现对该语音识别模型的存储。
对于语音识别模型,通过该语音识别模型能够实现人机交互,用户发出声音,计算机设备采集用户的声音,得到语音信号,将语音信号输入语音识别模型中得到对应的语音识别结果,再基于语音识别结果进行其他处理,例如,分析用户意图,从而执行相应的功能,该功能可以由相关技术人员根据场景进行设置,比如播放某个音频来回答用户等。当然,该语音识别模型的应用场景还包括其他场景,例如机器翻译、语音搜索等场景,本申请实施例对该语音识别模型的应用场景不作具体限定。
可选地,该语音识别模型基于大量语料和对应的目标识别结果训练得到,模型训练过程可以在该计算机设备上进行,也可以在其他计算机设备上进行,该其他计算机设备完成训练过程后,将模型数据发送至该计算机设备进行存储。也即是,上述至少两组状态转移数据可以在该计算机设备上进行模型训练完成时产生,也可以为其他计算机设备产生,该计算机设备接收其他计算机设备发送的至少两组状态转移数据。
在一种可能实现方式中,语音识别模型对语音信号进行识别时包括至少一个阶段,每个阶段通过一个语音识别模块实现。相应地,该语音识别模型包括至少一个语音识别模块,一个语音识别模块对应至少两组状态转移数据。计算机设备可以分别对至少一个语音识别模块的至少两组状态转移数据进行编码后存储。
可选地,对于语音识别过程的阶段划分,该语音识别模型能够对输入的语音信号进行特征提取,得到声学特征,再对声学特征进行音素的识别,将声学特征映射为三音子、再对三音子进行音素的识别,将三音子映射为对应的单音素,再根据语音信号对应的多个单音素进行字词的识别,将音素映射为字词,再对映射的字词进行语句的识别,将字词映射为语句,从而输出语音信号对应的语句。
不同语音识别模块的语音识别功能不同。在一个具体的可能实施例中,该至少一个语音识别模块包括第一语音识别模块、第二语音识别模块、第三语音识别模块和第四语音识别模块;该第一语音识别模块用于将声学特征识别为对应的三音子,该第二语音识别模块用于将三音子识别为对应的单音素,该第三语音识别模块用于将单音素识别为字词,该第四语音识别模块用于将字词识别为语句。
不同的语音识别模块的功能不同,相应地,不同语音识别模块的状态转移数据的类型也不同。对于第一语音识别模块,它的状态转移数据中输入数据为声学特征,输出数据为三音子。对于第二语音识别模块,它的状态转移数据中输入数据为三音子,输出数据为单音素。对于第三语音识别模块,它的状态转移数据中输入数据为单音素,输出数据为字词。对于第四语音识别模块,它的状态转移数据中输入数据为字词,输出数据为语句。
例如,一个语音识别模块为一个WFST,如图5所示,该语音识别模型被称为解码器500,该解码器500包括声学模型501和四个WFST,该四个WFST分别标记为WFST-H502(映射关系为HMM到三音子)、WFST-C503(映射关系为三音子到音素)、WFST-L504(映射关系为音素到字词)和WFST-G505(映射关系为字词到句子)。WFST-H502也即是第一语音识别模块,WFST-C503也即是第二语音识别模块,WFST-L504也即是第三语音识别模块,WFST-G505也即是第四语音识别模块。WFST-G505还可以称为语音模型。对于WFST-G505(也即是第四语音识别模块、语音模型),它的状态转移数据以五元组{StateIdFrom,StateIdTo,ilabel,olabel,weight}表示,StateIdFrom用于表示句子当前所处的状态,StateIdTo用于表示句子所处的下一状态,ilabel用于表示字词,olabel用于表示语句,也即是,ilabel和olabel用于表示字词的集合,weight用于表示StateIdFrom到StateIdTo通过ilabel和olabel进行映射的概率。其中,HMM为声学特征映射后的隐状态,能够用于表征声学特征。
例如,如图6所示,WFST是一个有向图,(a)为一种声学模型对应的有向图,(b)为一种语音模型对应的有向图。图6中的有向图仅为一种示例性说明,并不对本申请造成限定。图6中每条边上分别为输入数据/输出数据/概率数据。图中英文字符的中文释义如下:data为数据的意思。using为使用的意思。is和are为是的意思。其中,is为单数形式,也用于第三人称,are为复数形式,也用于第二人称。better为更好的意思,worse为更差的意思。
可选地,将一个语音识别模块的至少两组状态转移数据看做一个状态转移数据集合,则一个语音识别模块对应一个状态转移数据集合,该状态转移数据集合包括至少两组状态转移数据。计算机设备分别对每个语音识别模块的状态转移数据集合中至少两组状态转移数据进行编码后存储。
402、计算机设备根据状态转移数据中各种数据的排列顺序,对该至少两组状态转移数据进行排序。
在对状态转移数据进行编码时,可以先对该至少两组状态转移数据进行排序,再按照排序结果,依次对每组状态转移数据进行处理。
这样状态转移相关的数据相邻,编码后编码数据也相邻,后续根据索引查询时,能够根据索引找到对应的一个位置开始进行查询,直至查询完所需的编码数据为止。这样索引信息建立时,对于状态转移相关的数据可以建立一次对应的索引信息,从而减少索引信息的数据量,进而减少最终存储的数据量,提高存储效率,减少对存储空间和内存的占用,降低数据存储为设备的性能所带来的影响。
该排序方式可以采用从小到大的方式,也可以采用从大到小的方式,本申请实施例对此不作限定。
在排序时能够将数据的排列顺序作为排序的优先级,也即是确定出先按照哪种数据进行排序,再按照哪种数据进行排序。该步骤402的排序过程为:计算机设备以该状态转移数据中各种数据的排列顺序为排序优先级,依次按照该各种数据对该至少两组状态转移数据进行排序。
在一种可能实现方式中,一组状态转移数据中各种数据按照排列顺序为第一状态的状态标识、第二状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据。也即是,各种数据的排列顺序中,第一状态的状态标识排在第一位,第二状态的状态标识排在第二位,依次输入数据排在第三位,输出数据排在第四位,概率数据排在第五位,也即是最后。相应地,五元组为{StateIdFrom,StateIdTo,ilabel,olabel,weight}。如果将五元组的五种数据成为五种关键字,上述排序过程即为按照关键字的先后顺序作为优先级进行排序的过程。
对于上述实现方式中数据的排列顺序,该排序过程可以为:计算机设备按照该第一状态的状态标识,对该至少两组状态转移数据进行排序,对于排序后该第一状态的状态标识相同的至少两组状态转移数据,计算机设备按照该第二状态的状态标识进行排序,计算机设备继续按照第一状态转移到第二状态的输入数据、输出数据和概率数据,对该至少两组状态转移数据进行排序。该继续排序的过程也即是:对于排序后该第一状态的状态标识相同、第二状态的状态标识相同的至少两组状态转移数据,计算机设备按照输入数据进行排序,再按照输出数据进行排序,最后按照概率数据进行排序。
例如,对一组状态转移数据也即是五个五元组进行排序时,按照关键字前后顺序的优先级进行从小到大的排序,得到如图7所示的结果。图7中的值均为一种示例性说明,并不对本申请造成限定。图中英文字符的中文释义如下:data为数据的意思。using为使用的意思。is和are为是的意思。其中,is为单数形式,也用于第三人称,are为复数形式,也用于第二人称。better为更好的意思,worse为更差的意思。weight为权重的意思,在此指概率数据。
在语音识别模型包括至少一个语音识别模块的实现方式中,在对一个语音识别模块的至少两组状态转移数据进行存储时,对该模块的至少两组状态转移数据进行排序后,执行后续编码步骤和存储步骤,不同模块的编码过程分开进行,互不干扰。可选地,不同语音识别模块的编码和存储过程可以基于同一线程实现,也可以基于不同线程实现,这样该不同语音识别模块的编码和存储过程可以串行进行,也可以并行进行,本申请实施例对此不作限定。
403、计算机设备按照排序结果,依次根据该至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识对应的编码数据,对该概率数据进行编码,得到该概率数据的编码数据。其中,一种数据的编码数据的长度与该数据的出现频次负相关。
该编码过程中包括两部分数据的编码过程,第一部分数据的编码过程为输入数据、输出数据和第二状态的状态标识的编码过程,第二部分数据的编码过程为对概率数据的编码过程。考虑到对概率数据的编码方式与对第一部分数据的编码方式相同或不同,下面分别通过步骤一和步骤二来对两种部分数据的编码过程进行说明。
步骤一、根据该至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识对应的编码数据。
在对输入数据、输出数据和第二状态的状态标识进行编码时,能够对每种数据能够单独进行出现频次的统计和编码,不同种数据之间互不干扰。具体地,该步骤一能够通过下述步骤A至步骤C实现。
步骤A、获取该至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识的出现频次。
该出现频次能够通过统计得到,相应地,该步骤A中,计算机设备对输入数据进行统计,得到输入数据的出现频次;对输出数据进行统计,得到输出数据的出现频次;对第二状态的状态标识进行统计,得到第二状态的状态标识的出现频次。
需要说明的是,上述输入数据、输出数据和第二状态的状态标识为对一种数据的称呼,在不同状态转移过程中,上述多种数据的值不同。上述出现频次的获取过程为对数据的值的出现频次的获取过程。例如,在一个状态转移过程中,输入数据为ix4-o3+iuu,输出数据为我,第二状态的状态标识为61,在另一个状态转移过程中,输入数据为errl-uu4+iuu,输出数据为我,第二状态的状态标识为64。对这两个状态转移过程进行出现频次的统计时,对于输入数据进行统计时,“ix4-o3+iuu”、“errl-uu4+iuu”的出现频次均为1,对于输出数据进行统计时,“我”的出现频次为2。对于第二状态的状态标识进行统计时,“61”、“64”的出现频次均为1。又例如,输入数据中包括三个值:“我”、“爱”和“祖国”,在对输入数据的值统计时,“我”的次数为10000,“爱”的次数为5000,“祖国”的次数为200。
在一种可能实现方式中,在对至少两组状态转移数据进行编码时,可以统计每种数据在该至少两组状态转移数据中的出现频次,在语音识别模型包括至少一个语音识别模块的实现方式中,对一个语音识别模块的至少两组状态转移数据进行编码时,统计每种数据在该语音识别模块的至少两组状态转移数据中的出现频次即可。一个语音识别模块对应一个状态机,在对数据进行出现频次的统计时,统计该数据在其所在的状态机中的出现频次即可。
在另一种可能实现方式中,对一个语音识别模块的至少两组状态转移数据进行编码时,也可以统计每种数据在该语音识别模型的所有状态转移数据中的出现频次,本申请实施例对具体采用哪种方式不作限定。
步骤B、以输入数据、输出数据和第二状态的状态标识的值为结点,以一种数据的值的出现频次为该数据的值的结点权值,分别构造该输入数据、输出数据和第二状态的状态标识对应的树,该树的任一结点与根结点的距离与该结点的结点权值负相关。
将每种数据的编码过程看作为树的构造和基于树的编码过程,该步骤B为每种数据对应的树的构造过程。输入数据对应一棵树,输出数据对应一棵树,第二状态的状态标识对应一棵树。针对每棵树均可以进行编码得到对应数据的编码数据。
在树的构造过程中,将数据的值作为一个结点,将出现频次作为结点权值,对于一种数据,这种数据的所有值为森林,该森林中的每棵树仅有一个结点,然后对森林中的结点进行选择来合并,能够将森林中的所有结点合并为一棵树,进而得到这种数据对应的树。在选择结点合并时,需要使得该树的任一结点与根结点的距离与该结点的结点权值负相关,也即是,结点的结点权值(与出现频次相等)越大,该结点与根结点的距离越小,这样编码时,该结点的编码数据的长度越小。
可选地,该树为k叉树,该k为大于或等于2的正整数。例如,在k为2时,该树为二叉树。该k用于确定树构造过程中选择合并时一次选择的结点数量。k不同时,编码数据的进制不同,编码数据的长度也不同。具体地,该树的构造过程可以为包括步骤B1和步骤B2。
步骤B1、对于输入数据、输出数据和第二状态的状态标识中一种数据,计算机设备以该数据的值为结点,以该数据的值的出现频次为该值对应结点的结点权值,从该数据的至少两个结点中,提取k个该结点权值最小的结点,将该k个该结点权值最小的结点作为该树的k个叶子结点,将该k个叶子结点的结点权值之和作为该k个叶子结点的第一父结点的结点权值。
步骤B2、计算机设备继续从该数据除该k个结点权值最小的结点之外的至少两个结点中,提取k-1个结点权值最小的结点,将该k-1个结点权值最小的结点作为该树的k-1个叶子结点,将该k-1个叶子结点的结点权值与该第一父结点的结点权值之和作为该k-1个叶子结点和该第一父结点的父结点的结点权值,直至该数据的至少两个结点均作为该树的叶子结点为止。
在一个具体的可能实施例中,该树为哈夫曼树,根据哈夫曼树进行编码的方式为哈夫曼编码。以输入数据为例,在示例中,以存储语音模型(WFST-G)为例,将每种数据的所有值看做为该数据的集合,分别对所有StateIdTo、ilabel、olabel进行值的频次统计(以ilabel中的字词为例,“我”的次数为10000,“爱”的次数为5000,“祖国”的次数为200),ilabel(也即是输入数据)集合里包括n个字词w1、w2、…、wn。以n个字词的出现频次作为权值构造ilabel对应的哈夫曼树。以k为2,也即是该哈夫曼树为二叉树为例,该哈夫曼树的构造过程可以为(a)至(d)。
(a)将ilabel集合里的n个字词w1、w2、…、wn看成是有n棵树的森林(每棵树仅有一个结点)。
(b)在森林中选出两个根结点的结点权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和。
(c)从森林中删除选取的两棵树,并将新树加入森林。
(d)重复(b)、(c)步骤,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
例如,以输入数据为例,通过上述步骤(a)至(d),得到如图8所示的哈夫曼树,“我”的次数为10000,“爱”的次数为5000,“祖国”的次数为200,相应地,“我”距离根结点r的距离比“爱”距离根结点r的距离小,“爱”距离根结点r的距离比“祖国”距离根结点r的距离小。
步骤C、根据该输入数据、输出数据和第二状态的状态标识对应的树,对该输入数据、输出数据和第二状态的状态标识进行编码,得到对应的编码数据。
计算机设备在得到每种数据对应的树后,根据树进行编码,例如,根据图8所示的哈夫曼树进行编码,能够得到:“我”的编码数据为0,“爱”的编码数据为01,“祖国”的编码数据为011。
步骤二、对该概率数据进行编码,得到该概率数据的编码数据。
该步骤二为对概率数据的编码过程,该编码过程可以通过多种方式实现,下面提供了两种可能实现方式,本申请实施例可以采用任一种方式,对此不作具体限定。
方式一、计算机设备根据该概率数据的出现频次,对该概率数据进行编码,得到该概率数据的编码数据。该方式一中,对概率数据的编码方式与步骤一中的编码方式相同,编码过程同理,在此不多做赘述。
方式二、计算机设备将该概率数据转化为目标位数的二进制编码,将该二进制编码作为该概率数据的编码数据。该方式二中,考虑到概率数据的数据类型与其他数据的数据类型不同,可以对概率数据可以进行等长编码,得到编码数据。
该目标位数可以由相关技术人员根据需求进行设置,例如32位,本申请实施例对此不作限定。
该步骤403为按照排序结果,依次对该至少两组状态转移数据执行编码步骤,得到该至少两个第一状态对应的编码数据的过程,在上述过程中,先根据各种数据的排列顺序对至少两组状态转移数据进行排序,再对排序后的数据进行编码。可选地,该过程也可以无需排序,直接对该至少两组状态转移数据进行编码,后续创建每个第一状态与对应的第二状态的相关数据之间的索引关系即可,减少了排序过程,能够减少排序所需的时间,从而能够减少数据存储的时间,提高存储效率。
上述步骤402和步骤403为根据该至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识的编码数据,对该概率数据进行编码,得到该概率数据的编码数据的过程,通过编码过程得到所需编码的数据的编码数据后,即执行后续步骤对编码数据进行存储。
在语音识别模型包括至少一个语音识别模块的实现方式中,计算机设备对每个语音识别模块的状态转移数据进行处理,得到对应的编码数据后,可以执行后续存储步骤,对每个语音识别模块的编码数据进行存储。
404、计算机设备存储至少两个第一状态对应的编码数据。
一组状态转移数据均对应一个第一状态,该至少两组状态转移数据对应有至少两个第一状态,通过上述步骤403,计算机设备能够得到至少两个第一状态对应的编码数据。计算机设备存储该编码数据,这样该语音识别模型的模型数据存储于该计算机设备中,后续如果有语音识别需求,能够使用该语音识别模型进行语音识别。
在一种可能实现方式中,语音识别模型以模型文件的形式存储于该计算机设备中,相应地,该步骤404为:计算机设备将至少两个第一状态对应的编码数据写入第一模型文件,存储该第一模型文件。
可选地,一组状态转移数据对应有该组中第一状态的状态标识对应的编码数据,多组状态转移数据对应有一个或多个第一状态的状态标识对应的编码数据。不同组状态转移数据中第一状态的状态标识可能相同,也可能不同。因而,当第一状态的状态标识为某个值时,该第一状态的状态标识可能对应一组或多组状态转移数据的编码数据。
在一种可能实现方式中,在存储时,可以将多组状态转移数据对应的编码数据拼接在一起进行存储。具体地,计算机设备对该至少两个第一状态对应的编码数据进行拼接,将拼接后的编码数据写入第一模型文件,存储该第一模型文件。
在语音识别模型包括至少一个语音识别模块的实现方式中,一个语音识别模块的模型数据的编码数据能够存储至一个或多个第一模型文件中。不同语音识别模块的编码数据能够存储在不同的第一模型文件中。可选地,不同语音识别模块的编码数据也能够存储在相同的第一模型文件中。
405、计算机设备创建并存储该至少两个第一状态的状态标识与该至少两个第一状态对应的编码数据之间的索引信息。
计算机设备还需存储第一状态的状态标识与第一状态对应的编码数据之间的索引信息,从而能够基于该索引信息和第一状态的状态标识,确定出对应的编码数据。
具体地,计算机设备创建该至少两个第一状态的状态标识与该至少两个第一状态对应的编码数据的首个比特位置之间的索引信息,该索引信息中一个第一状态的状态标识与该第一状态对应的编码数据的首个比特位置之间具有索引关系,将该索引信息写入第二模型文件,存储第二模型文件。
其中,该第二模型文件与上述第一模型文件为相同或不同的文件,本申请实施例对此不作限定。
可选地,该索引信息为索引表,也可以采用其他形式,本申请实施例对此不作限定。
上述步骤404和步骤405为以该至少两组状态转移数据中至少两个第一状态的状态标识作为该至少两个第一状态对应的编码数据的索引,存储该编码数据的过程,在语音识别模型包括至少一个语音识别模块的实现方式中,也即是,计算机设备对于该至少一个语音识别模块中一个语音识别模块,根据该语音识别模块的目标至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识在该目标至少两组状态转移数据中的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识的编码数据,对该目标至少两组状态转移数据中该概率数据进行编码,得到该概率数据的编码数据,以该目标至少两组状态转移数据中至少两个第一状态的状态标识作为该至少两个第一状态对应的编码数据的索引,存储该至少两个第一状态对应的编码数据对应的编码数据作为该语音识别模块的编码数据。
在一个具体示例中,上述步骤403至步骤405中,对于WFST里的每条边去掉StateIdFrom,同时将{StateIdTo,ilabel,olabel,weight}中的StateIdTo、ilabel和olabel分别用对应的哈夫曼树映射为二进制,把weight直接映射32bit的二进制,然后将全部边的二进制值拼接并写为入模型文件,末尾不足一个完整字节(Byte)则补0。创建索引表(将其记为StateTable),索引每个StateIdFrom对应首个{StateIdTo,ilabel,olabel,weight}的bit位置,同样写入模型文件。例如,如图9所示,图9中示出了将图7所示的五元组中StateIdFrom去除,剩下的四元组可以再进行上述编码过程,图9中还示出了StateIdFrom与对应的四元组之间的索引关系。图中英文字符的中文释义如下:data为数据的意思。using为使用的意思。is和are为是的意思。其中,is为单数形式,也用于第三人称,are为复数形式,也用于第二人称。better为更好的意思,worse为更差的意思。weight为权重的意思,在此指概率数据。
在一种可能实现方式中,通过上述编码方式编码,并对编码数据进行存储后,还提供了一种在线解码方式,也即是还支持在线解码。具体地,计算机设备响应于解码指令,以当前解码所处目标状态的状态标识为索引,从存储数据中读取该目标状态对应的编码数据,对该目标状态对应的编码数据进行解码。
相关技术中通常是在接收到解码指令后,提取语音识别模型的模型文件进行解压缩,解压缩后才能够提取编码数据进行解码,以进行后续的语音识别步骤。而本申请中,能够直接基于索引从存储数据中提取所需解码的编码数据进行解码运行,无需解压缩的预处理,因而提供了一种新的解码方式,省去了解压缩步骤,提高了解码效率。
具体地,读取编码数据的过程可以为:计算机设备以当前解码所处目标状态的状态标识为索引,获取该状态标识对应的目标比特位置,从该目标比特位置开始读取编码数据,根据各种数据的树的深度,依次读取到各种数据的编码数据,重复读取步骤,直至提取到索引信息中该目标状态外的其他状态标识或索引信息的尾部信息时停止。
在一个具体示例中,以通过offset引用读取编码数据为例,当解码器使用语言模型(WFST-G)时,假设当前解码处于StateIdFrom状态,在线解码过程可以如图10所示,包括下述步骤1-步骤4。
步骤1、从索引表StateTable获取StateIdFrom对应的首个{StateIdTo,ilabel,olabel,weight}的比特(bit)位置offset;
步骤2、从offset开始依次读取bit二进制,利用StateIdTo的哈夫曼树索引映射回原值,然后offset根据树的深度值往前移动,之后依次对ilabel和olabel进行同样处理。
步骤3、从offset读取32bit的weight值,然后offset往前移动32bit。
步骤4、重复2和3的步骤,直到offset在索引表StateTable触达下一state(状态)的偏移位或表尾,至此获得StateIdFrom的全部边,以供解码器使用。
在一种可能实现方式中,该解码指令为其他计算机设备发送的指令;或该解码指令由接收到语音信号触发。例如,如果该计算机设备为服务器,该服务器可以满足终端的语音识别需求,接收终端发送的解码指令,并基于语音识别模型对终端发送的语音信号进行处理,可以称之为云端语音识别服务。如果该计算机设备为终端,该终端能够支持嵌入式语音识别,终端能够接收语音信号,触发解码指令,并基于语音识别模型对语音信号进行处理,可以称之为嵌入式语音识别服务。
在一个具体示例中,上述编码过程采用哈夫曼编码,结合编码过程以及上述在线解码的方案中,首先,利用哈夫曼编码对WFST的字段进行无损压缩,在同样大小的原模型下,占用更少的空间来构建WFST,其次,提出的是一种支持在线哈夫曼解码的方案,在运行算法时无需对模型进行解压的预处理。因此,该方案不但减小了WFST语音识别模型的大小,降低对存储空间的需求,而且同时优化了运行内存的占用,能够很好地适用于云端和嵌入式语音识别任务。
由于无论在云端还是移动端,存储空间均为宝贵资源。一般模型的性能与大小呈正相关,更大的模型能表现更好的性能。此外,移动端的模型(嵌入式语音识别模型)大小不但影响APP所占空间,而且影响用户下载资源的时间成本,通过上述方式能够极大地减少占用的存储空间,降低对其他算法运行造成的影响。且不会造成高负载的内存,不会影响算法运算的稳定性,降低了触发OOM(Out Of Memory)的概率。
上述方法可以应用于多种语音识别场景中,应用场景广泛。在一种可能实现方式中,计算机设备可以为服务器,也即是将语音识别的方案放于云服务上,作为一种基础技术赋能于使用该云服务的用户。例如,应用场景包括语音输入场景和语音搜索场景。如图11所示,提供一种具体的语音输入场景,在一些社交网络应用中,直接说话即可实现“出口成章”,快速答复聊天内容。具体地,用户能够点击语音输入按钮1101,并直接发出声音,终端能够采集语音信号,对语音信号进行识别,将其转为文字内容1102,如果用户确定发送该文字内容,可以发送该文字内容。当然,在其他应用中,转为文字内容后,还可以基于该文字内容实现其他功能,例如,将其输入在文本中,实现机器翻译的功能。如图12所示,提供一种具体的语音搜索场景,用户无需在搜索框1201中手动输入,只需要点击语音输入按钮1202,在弹出语音输入提示1203时发出声音,终端能够采集语音信号,对语音信号进行识别,将其转为文字内容,直接基于该文字内容进行资源搜索。例如,在音乐应用中,用户说出歌曲名字,终端可以马上检索喜欢的歌曲。
在另一种可能实现方式中,该计算机设备也可以为终端,也即是将该方案用于垂直领域下的嵌入式语音识别场景。例如,在不同的场景中,该终端能够具有相应的产品形式。该终端可以为如图13所示的智能音箱1300,可以为如图14所示的车载控制中心1400等。即使在脱网时,可通过嵌入式语音识别,用户说出预将操作的指令,设备则根据指令进行回答或响应。
如图15所示,以车载控制中心为例,提供了用户通过语音对车辆进行操控的一次交互流程。用户1501按下方向盘语音控制按钮,控制中心1502响应并等待用户说话,用户1501说出自己将要操作的指令,例如“打开天窗”。控制中心1502录音,并通过云端语音识别(联网)或嵌入式语音识别(脱网)识别指令。控制中心1502根据指令进行反馈,比如车的天窗渐渐打开。整个过程中,无论是联网或是脱网,用户均可通过语音与车载控制中心进行沟通,完整的交互流程自然便捷。
以本申请实施例中采用哈夫曼编解码,构建语音识别WFST的存储为例,实现可变字长的编码,较好地改善了现有语音识别WFST技术中的不足。以语言模型(WFST-G)为例,我们进行了如下实验,在实验中,我们用srilm工具生成各个大小的arpa文件进行编码实验对比,对比结果如表1。从实验结果可以分析得出,在各个尺寸的语言模型下,与等字节编码WFST相比,哈夫曼编码的模型得到了三分之一的优化。有效压缩模型所占空间,稳定降低运行内存的占用,是本申请实施例提供的技术方案的有益效果。
表1
本申请实施例中,对于语音识别模型的至少两组状态转移数据,对输入数据、输出数据和状态转移后的第二状态的状态标识进行编码时,根据这些数据的出现频次进行编码,一种数据的编码数据的长度与该数据的出现频次负相关,这样考虑到数据的出现频次,通过出现频次来影响编码数据的长度,对于出现频次大的数据,编码数据的长度小,对于出现频次小的数据,编码数据的长度大,相较于等长编码中每种数据的编码数据长度固定的方式,根据出现频次进行可变字长方式的编码,大大减少了编码数据中的冗余部分,降低了编码数据的数据量,对概率数据进行编码得到编码数据,以状态转移前的第一状态的状态标识作为索引来存储编码数据,能够有效减少模型数据所占用的存储空间和内存,降低数据存储为设备的性能所带来的影响,且数据量减少也会提高模型数据的存储效率。
上述所有可选技术方案,能够采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图16是本申请实施例提供的一种数据存储装置的结构示意图,参见图16,该装置包括:
获取模块1601,用于获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前后两个状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据;
编码模块1602,用于根据该至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识的编码数据,一种数据的编码数据的长度与该数据的出现频次负相关;
该编码模块1602,还用于对该概率数据进行编码,得到该概率数据的编码数据;
存储模块1603,用于以该至少两组状态转移数据中至少两个第一状态的状态标识作为该至少两个第一状态对应的编码数据的索引,存储该编码数据。
在一种可能实现方式中,该编码模块1602包括排序单元和编码单元;
该排序单元用于根据状态转移数据中各种数据的排列顺序,对该至少两组状态转移数据进行排序;
该编码单元用于按照排序结果,依次对该至少两组状态转移数据执行编码步骤,得到该至少两个第一状态对应的编码数据。
在一种可能实现方式中,一组状态转移数据中各种数据按照排列顺序为第一状态的状态标识、第二状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据;
该排序单元用于以该状态转移数据中各种数据的排列顺序为排序优先级,依次按照该各种数据对该至少两组状态转移数据进行排序。
在一种可能实现方式中,该编码模块1602用于:
获取该至少两组状态转移数据该输入数据、输出数据和第二状态的状态标识的出现频次;
以输入数据、输出数据和第二状态的状态标识的值为结点,以一种数据的值的出现频次为该数据的值的结点权值,分别构造该输入数据、输出数据和第二状态的状态标识对应的树,该树的任一结点与根结点的距离与该结点的结点权值负相关;
根据该输入数据、输出数据和第二状态的状态标识对应的树,对该输入数据、输出数据和第二状态的状态标识进行编码,得到对应的编码数据。
在一种可能实现方式中,该树为k叉树,该k为大于或等于2的正整数。
在一种可能实现方式中,该编码模块1602用于执行下述任一项:
根据该概率数据的出现频次,对该概率数据进行编码,得到该概率数据的编码数据;
将该概率数据转化为目标位数的二进制编码,将该二进制编码作为该概率数据的编码数据。
在一种可能实现方式中,该存储模块1603包括第一存储单元和第二存储单元;
该第一存储单元用于存储该至少两个第一状态对应的编码数据;
该第二存储单元用于创建并存储该至少两个第一状态的状态标识与该至少两个第一状态对应的编码数据之间的索引信息。
在一种可能实现方式中,该第一存储单元用于:
对该至少两个第一状态对应的编码数据进行拼接;
将拼接后的编码数据写入第一模型文件,存储该第一模型文件。
在一种可能实现方式中,该第二存储单元用于:
创建该至少两个第一状态的状态标识与该至少两个第一状态对应的编码数据的首个比特位置之间的索引信息,该索引信息中一个第一状态的状态标识与该第一状态对应的编码数据的首个比特位置之间具有索引关系;
将该索引信息写入第二模型文件,存储该第二模型文件。
在一种可能实现方式中,该语音识别模型包括至少一个语音识别模块;一个语音识别模块对应至少两组状态转移数据;
该编码模块1602,用于对于该至少一个语音识别模块中一个语音识别模块,根据该语音识别模块的目标至少两组状态转移数据中该输入数据、输出数据和第二状态的状态标识在该目标至少两组状态转移数据中的出现频次,对该输入数据、输出数据和第二状态的状态标识进行编码,得到该输入数据、输出数据和第二状态的状态标识的编码数据;
该编码模块1602,还用于对该目标至少两组状态转移数据中该概率数据进行编码,得到该概率数据的编码数据;
该存储模块1603,用于以该目标至少两组状态转移数据中至少两个第一状态的状态标识作为该至少两个第一状态对应的编码数据的索引,存储该至少两个第一状态对应的编码数据对应的编码数据作为该语音识别模块的编码数据。
在一种可能实现方式中,该至少一个语音识别模块包括第一语音识别模块、第二语音识别模块、第三语音识别模块和第四语音识别模块;该第一语音识别模块用于将声学特征识别为对应的三音子,该第二语音识别模块用于将三音子识别为对应的单音素,该第三语音识别模块用于将单音素识别为字词,该第四语音识别模块用于将字词识别为语句。
在一种可能实现方式中,该装置还包括:
读取模块,用于响应于解码指令,以当前解码所处目标状态的状态标识为索引,从存储数据中读取该目标状态对应的编码数据;
解码模块,用于对该目标状态对应的编码数据进行解码。
在一种可能实现方式中,该解码指令为其他计算机设备发送的指令;或该解码指令由接收到语音信号触发。
本申请实施例中,对于语音识别模型的至少两组状态转移数据,对输入数据、输出数据和状态转移后的第二状态的状态标识进行编码时,根据这些数据的出现频次进行编码,一种数据的编码数据的长度与该数据的出现频次负相关,这样考虑到数据的出现频次,通过出现频次来影响编码数据的长度,对于出现频次大的数据,编码数据的长度小,对于出现频次小的数据,编码数据的长度大,相较于等长编码中每种数据的编码数据长度固定的方式,根据出现频次进行可变字长方式的编码,大大减少了编码数据中的冗余部分,降低了编码数据的数据量,对概率数据进行编码得到编码数据,以状态转移前的第一状态的状态标识作为索引来存储编码数据,能够有效减少模型数据所占用的存储空间和内存,降低数据存储为设备的性能所带来的影响,且数据量减少也会提高模型数据的存储效率。
需要说明的是:上述实施例提供的数据存储装置在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述计算机设备为下述图17所示的终端,或为下述图18所示的服务器,本申请实施例对此不作限定。
图17是本申请实施例提供的一种终端的结构框图。可选地,该终端1700的设备类型包括:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1700还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1700包括有:处理器1701和存储器1702。
可选地,处理器1701包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器1701采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable LogicArray,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器1701包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1701集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1701还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器1702包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器1702还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1702中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1701所执行以实现本申请中各个实施例提供的数据存储方法。
在一些实施例中,终端1700还可选包括有:外围设备接口1703和至少一个外围设备。处理器1701、存储器1702和外围设备接口1703之间能够通过总线或信号线相连。各个外围设备能够通过总线、信号线或电路板与外围设备接口1703相连。具体地,外围设备包括:射频电路1704、触摸显示屏1705、摄像头组件1706、音频电路1707、定位组件1708和电源1709中的至少一种。
外围设备接口1703可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1701和存储器1702。在一些实施例中,处理器1701、存储器1702和外围设备接口1703被集成在同一芯片或电路板上;在一些其他实施例中,处理器1701、存储器1702和外围设备接口1703中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1704用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1704包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路1704通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1704还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1705用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏1705是触摸显示屏时,显示屏1705还具有采集在显示屏1705的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器1701进行处理。可选地,显示屏1705还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1705为一个,设置终端1700的前面板;在另一些实施例中,显示屏1705为至少两个,分别设置在终端1700的不同表面或呈折叠设计;在再一些实施例中,显示屏1705是柔性显示屏,设置在终端1700的弯曲表面上或折叠面上。甚至,可选地,显示屏1705设置成非矩形的不规则图形,也即异形屏。可选地,显示屏1705采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1706用于采集图像或视频。可选地,摄像头组件1706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1706还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路1707包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1701进行处理,或者输入至射频电路1704以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端1700的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1701或射频电路1704的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1707还包括耳机插孔。
定位组件1708用于定位终端1700的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。可选地,定位组件1708是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1709用于为终端1700中的各个组件进行供电。可选地,电源1709是交流电、直流电、一次性电池或可充电电池。当电源1709包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端1700还包括有一个或多个传感器1710。该一个或多个传感器1710包括但不限于:加速度传感器1711、陀螺仪传感器1712、压力传感器1713、指纹传感器1714、光学传感器1715以及接近传感器1716。
在一些实施例中,加速度传感器1711检测以终端1700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1711用于检测重力加速度在三个坐标轴上的分量。可选地,处理器1701根据加速度传感器1711采集的重力加速度信号,控制触摸显示屏1705以横向视图或纵向视图进行用户界面的显示。加速度传感器1711还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器1712检测终端1700的机体方向及转动角度,陀螺仪传感器1712与加速度传感器1711协同采集用户对终端1700的3D动作。处理器1701根据陀螺仪传感器1712采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器1713设置在终端1700的侧边框和/或触摸显示屏1705的下层。当压力传感器1713设置在终端1700的侧边框时,能够检测用户对终端1700的握持信号,由处理器1701根据压力传感器1713采集的握持信号进行左右手识别或快捷操作。当压力传感器1713设置在触摸显示屏1705的下层时,由处理器1701根据用户对触摸显示屏1705的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1714用于采集用户的指纹,由处理器1701根据指纹传感器1714采集到的指纹识别用户的身份,或者,由指纹传感器1714根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1701授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。可选地,指纹传感器1714被设置终端1700的正面、背面或侧面。当终端1700上设置有物理按键或厂商Logo时,指纹传感器1714能够与物理按键或厂商Logo集成在一起。
光学传感器1715用于采集环境光强度。在一个实施例中,处理器1701根据光学传感器1715采集的环境光强度,控制触摸显示屏1705的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1705的显示亮度;当环境光强度较低时,调低触摸显示屏1705的显示亮度。在另一个实施例中,处理器1701还根据光学传感器1715采集的环境光强度,动态调整摄像头组件1706的拍摄参数。
接近传感器1716,也称距离传感器,通常设置在终端1700的前面板。接近传感器1716用于采集用户与终端1700的正面之间的距离。在一个实施例中,当接近传感器1716检测到用户与终端1700的正面之间的距离逐渐变小时,由处理器1701控制触摸显示屏1705从亮屏状态切换为息屏状态;当接近传感器1716检测到用户与终端1700的正面之间的距离逐渐变大时,由处理器1701控制触摸显示屏1705从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图17中示出的结构并不构成对终端1700的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图18是本申请实施例提供的一种服务器的结构示意图,该服务器1800可因配置或性能不同而产生比较大的差异,该服务器1800包括一个或一个以上处理器(CentralProcessing Units,CPU)1801和一个或一个以上的存储器1802,其中,该存储器1802中存储有至少一条程序代码,该至少一条程序代码由该处理器1801加载并执行以实现上述各个实施例提供的数据存储方法。可选地,该服务器1800还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1800还包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由计算机设备中的处理器执行以完成上述实施例中的数据存储方法。可选地,该存储介质为计算机可读存储介质。可选地,该存储介质为易失性或非易失性的计算机可读存储介质。例如,该存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或该计算机程序包括一条或多条程序代码,该一条或多条程序代码存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条程序代码,该一个或多个处理器执行该一条或多条程序代码,使得计算机设备能够执行上述任一种可能实施方式的数据存储方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上该仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种数据存储方法,其特征在于,所述方法包括:
获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前第一状态对应的状态标识、状态转移后第二状态对应的状态标识、所述第一状态转移到所述第二状态的输入数据、输出数据和概率数据;
获取所述至少两组状态转移数据中的所述输入数据、所述输出数据和所述第二状态的状态标识的出现频次;
以所述输入数据、所述输出数据和所述第二状态的状态标识的值为结点,以一种数据的值的出现频次为所述数据的值的结点权值,分别构造所述输入数据、所述输出数据和所述第二状态的状态标识对应的树,所述树的任一结点与根结点的距离与所述结点的结点权值负相关;
根据所述输入数据、所述输出数据和所述第二状态的状态标识对应的树,对所述输入数据、所述输出数据和所述第二状态的状态标识分别进行编码,得到对应的编码数据,一种数据的编码数据的长度与所述数据的出现频次负相关;
对所述概率数据进行编码,得到所述概率数据的编码数据;
以所述至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述输入数据、所述输出数据和所述第二状态的状态标识分别对应的编码数据,以及所述概率数据的编码数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据状态转移数据中各种数据的排列顺序,对所述至少两组状态转移数据进行排序;
按照排序结果,依次对所述至少两组状态转移数据执行编码步骤,得到所述至少两个第一状态对应的编码数据。
3.根据权利要求2所述的方法,其特征在于,一组状态转移数据中各种数据按照排列顺序为第一状态的状态标识、第二状态的状态标识、第一状态转移到第二状态的输入数据、输出数据和概率数据;
所述根据状态转移数据中各种数据的排列顺序,对所述至少两组状态转移数据进行排序,包括:
以所述状态转移数据中各种数据的排列顺序为排序优先级,依次按照所述各种数据对所述至少两组状态转移数据进行排序。
4.根据权利要求3所述的方法,其特征在于,所述树为k叉树,所述k为大于或等于2的正整数。
5.根据权利要求1所述的方法,其特征在于,所述对所述概率数据进行编码,得到所述概率数据的编码数据,包括下述任一项:
根据所述概率数据的出现频次,对所述概率数据进行编码,得到所述概率数据的编码数据;
将所述概率数据转化为目标位数的二进制编码,将所述二进制编码作为所述概率数据的编码数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还,包括:
存储所述至少两个第一状态对应的编码数据;
创建并存储所述至少两个第一状态的状态标识与所述至少两个第一状态对应的编码数据之间的索引信息。
7.根据权利要求6所述的方法,其特征在于,所述存储所述至少两个第一状态对应的编码数据,包括:
对所述至少两个第一状态对应的编码数据进行拼接;
将拼接后的编码数据写入第一模型文件,存储所述第一模型文件。
8.根据权利要求6所述的方法,其特征在于,所述创建并存储所述至少两个第一状态的状态标识与所述至少两个第一状态对应的编码数据之间的索引信息,包括:
创建所述至少两个第一状态的状态标识与所述至少两个第一状态对应的编码数据的首个比特位置之间的索引信息,所述索引信息中一个第一状态的状态标识与所述第一状态对应的编码数据的首个比特位置之间具有索引关系;
将所述索引信息写入第二模型文件,存储所述第二模型文件。
9.根据权利要求1所述的方法,其特征在于,所述语音识别模型包括至少一个语音识别模块;一个语音识别模块对应至少两组状态转移数据;
所述方法还包括:
对于所述至少一个语音识别模块中一个语音识别模块,根据所述语音识别模块的目标至少两组状态转移数据中所述输入数据、所述输出数据和所述第二状态的状态标识在所述目标至少两组状态转移数据中的出现频次,对所述输入数据、所述输出数据和所述第二状态的状态标识进行编码,得到所述输入数据、所述输出数据和所述第二状态的状态标识对应的编码数据;
对所述目标至少两组状态转移数据中所述概率数据进行编码,得到所述概率数据的编码数据;
以所述目标至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述至少两个第一状态对应的编码数据作为所述语音识别模块的编码数据。
10.根据权利要求9所述的方法,其特征在于,所述至少一个语音识别模块包括第一语音识别模块、第二语音识别模块、第三语音识别模块和第四语音识别模块;所述第一语音识别模块用于将声学特征识别为对应的三音子,所述第二语音识别模块用于将三音子识别为对应的单音素,所述第三语音识别模块用于将单音素识别为字词,所述第四语音识别模块用于将字词识别为语句。
11.根据权利要求1所述的方法,其特征在于,所述以所述至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述编码数据之后,所述方法还包括:
响应于解码指令,以当前解码所处目标状态的状态标识为索引,从存储数据中读取所述目标状态对应的编码数据;
对所述目标状态对应的编码数据进行解码。
12.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取语音识别模型的至少两组状态转移数据,一组状态转移数据包括状态转移前第一状态对应的状态标识、状态转移后第二状态对应的状态标识、所述第一状态转移到所述第二状态的输入数据、输出数据和概率数据;
编码模块,用于获取所述至少两组状态转移数据中的所述输入数据、所述输出数据和所述第二状态的状态标识的出现频次;以所述输入数据、所述输出数据和所述第二状态的状态标识的值为结点,以一种数据的值的出现频次为所述数据的值的结点权值,分别构造所述输入数据、所述输出数据和所述第二状态的状态标识对应的树,所述树的任一结点与根结点的距离与所述结点的结点权值负相关;根据所述输入数据、所述输出数据和所述第二状态的状态标识对应的树,对所述输入数据、所述输出数据和所述第二状态的状态标识分别进行编码,得到对应的编码数据,一种数据的编码数据的长度与所述数据的出现频次负相关;
所述编码模块,还用于对所述概率数据进行编码,得到所述概率数据的编码数据;
存储模块,用于以所述至少两组状态转移数据中至少两个第一状态的状态标识作为所述至少两个第一状态对应的编码数据的索引,存储所述输入数据、所述输出数据和所述第二状态的状态标识分别对应的编码数据,以及所述概率数据的编码数据。
13.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求11任一项所述的数据存储方法。
14.一种存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求11任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010673829.3A CN112749550B (zh) | 2020-07-14 | 2020-07-14 | 数据存储方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010673829.3A CN112749550B (zh) | 2020-07-14 | 2020-07-14 | 数据存储方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112749550A CN112749550A (zh) | 2021-05-04 |
CN112749550B true CN112749550B (zh) | 2023-02-03 |
Family
ID=75645287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010673829.3A Active CN112749550B (zh) | 2020-07-14 | 2020-07-14 | 数据存储方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112749550B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377898B (zh) * | 2021-08-16 | 2021-11-23 | 南京东大智能化系统有限公司 | 一种基于海量离散数据的分析方法 |
CN116913057B (zh) * | 2023-09-12 | 2023-12-01 | 西安中创博远网络科技有限公司 | 基于物联网的畜牧养殖异常预警系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105161095A (zh) * | 2015-07-29 | 2015-12-16 | 百度在线网络技术(北京)有限公司 | 语音识别语法树的构图方法及装置 |
CN105208399A (zh) * | 2014-06-16 | 2015-12-30 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
CN108735201A (zh) * | 2018-06-29 | 2018-11-02 | 广州视源电子科技股份有限公司 | 连续语音识别方法、装置、设备和存储介质 |
CN110473527A (zh) * | 2019-09-17 | 2019-11-19 | 浙江核新同花顺网络信息股份有限公司 | 一种语音识别的方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010103969A (ja) * | 2008-09-25 | 2010-05-06 | Renesas Technology Corp | 画像復号方法、画像復号装置、画像符号化方法及び画像符号化装置 |
CN111199727B (zh) * | 2020-01-09 | 2022-12-06 | 厦门快商通科技股份有限公司 | 语音识别模型训练方法、系统、移动终端及存储介质 |
-
2020
- 2020-07-14 CN CN202010673829.3A patent/CN112749550B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105208399A (zh) * | 2014-06-16 | 2015-12-30 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
CN105161095A (zh) * | 2015-07-29 | 2015-12-16 | 百度在线网络技术(北京)有限公司 | 语音识别语法树的构图方法及装置 |
CN108735201A (zh) * | 2018-06-29 | 2018-11-02 | 广州视源电子科技股份有限公司 | 连续语音识别方法、装置、设备和存储介质 |
CN110473527A (zh) * | 2019-09-17 | 2019-11-19 | 浙江核新同花顺网络信息股份有限公司 | 一种语音识别的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112749550A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110490213B (zh) | 图像识别方法、装置及存储介质 | |
CN107134279B (zh) | 一种语音唤醒方法、装置、终端和存储介质 | |
CN110110145B (zh) | 描述文本生成方法及装置 | |
CN110164421B (zh) | 语音解码方法、装置及存储介质 | |
CN113421547B (zh) | 一种语音处理方法及相关设备 | |
CN112069309B (zh) | 信息获取方法、装置、计算机设备及存储介质 | |
CN110162604B (zh) | 语句生成方法、装置、设备及存储介质 | |
CN111524501B (zh) | 语音播放方法、装置、计算机设备及计算机可读存储介质 | |
CN110070859B (zh) | 一种语音识别方法及装置 | |
CN108922531B (zh) | 槽位识别方法、装置、电子设备及存储介质 | |
CN111597779A (zh) | 文本生成方法、装置、设备以及存储介质 | |
WO2023207541A1 (zh) | 一种语音处理方法及相关设备 | |
CN112749550B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN111581958A (zh) | 对话状态确定方法、装置、计算机设备及存储介质 | |
CN110555102A (zh) | 媒体标题识别方法、装置及存储介质 | |
CN113822076A (zh) | 文本生成方法、装置、计算机设备及存储介质 | |
CN118098274B (zh) | 模型训练方法、装置、电子设备及存储介质 | |
CN113948060A (zh) | 一种网络训练方法、数据处理方法及相关设备 | |
CN113761888A (zh) | 文本翻译方法、装置、计算机设备及存储介质 | |
CN112735429A (zh) | 确定歌词时间戳信息的方法和声学模型的训练方法 | |
CN113823298B (zh) | 语音数据处理方法、装置、计算机设备及存储介质 | |
CN114328815A (zh) | 文本映射模型的处理方法、装置、计算机设备及存储介质 | |
CN114333774A (zh) | 语音识别方法、装置、计算机设备及存储介质 | |
CN112289302B (zh) | 音频数据的合成方法、装置、计算机设备及可读存储介质 | |
CN113822084A (zh) | 语句翻译方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40044514 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |