CN115547334A - 小学作文语音识别文本纠错系统及方法 - Google Patents
小学作文语音识别文本纠错系统及方法 Download PDFInfo
- Publication number
- CN115547334A CN115547334A CN202211266801.3A CN202211266801A CN115547334A CN 115547334 A CN115547334 A CN 115547334A CN 202211266801 A CN202211266801 A CN 202211266801A CN 115547334 A CN115547334 A CN 115547334A
- Authority
- CN
- China
- Prior art keywords
- voice
- text
- model
- composition
- training
- 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.)
- Pending
Links
- 239000000203 mixture Substances 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000012937 correction Methods 0.000 title claims abstract description 18
- 238000012549 training Methods 0.000 claims abstract description 65
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 12
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 12
- 230000009466 transformation Effects 0.000 claims description 15
- 238000000844 transformation Methods 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 13
- 239000013598 vector Substances 0.000 claims description 12
- 230000014509 gene expression Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 238000013135 deep learning Methods 0.000 claims description 8
- 238000012795 verification Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 6
- 210000001747 pupil Anatomy 0.000 abstract description 6
- 230000003044 adaptive effect Effects 0.000 abstract description 4
- 230000008676 import Effects 0.000 description 27
- 230000000694 effects Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 5
- 208000025174 PANDAS Diseases 0.000 description 3
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 240000000220 Panda oleosa Species 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 108091006625 SLC10A6 Proteins 0.000 description 1
- 102100021993 Sterol O-acyltransferase 1 Human genes 0.000 description 1
- 238000000137 annealing Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000013209 evaluation strategy Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000035479 physiological effects, processes and functions Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- 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/26—Speech to text systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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/06—Creation of reference templates; Training of speech recognition systems, e.g. adaptation to the characteristics of the speaker's voice
- G10L15/063—Training
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种小学作文语音识别文本纠错系统及方法,包括如下步骤:选择目标小学作文训练语料,将选择的目标小学作文训练语料按照句子分成长度小于512字的短句;使用语音合成服务,分别按照男童音和女童音生成相应的语音文件;将语音作为模型输入、文本作为模型输出,对语料进行自适应训练下的微调;根据训练后的深度模型推断小学作文语音的文本。本发明主要解决小学生在写作文过程中,遇到不会书写的汉字时,通过说出想写的句子,系统会自动快速的提供正确的书写模式,作为参考,帮助学生完成作文的写作。
Description
技术领域
本发明涉及一种小学作文语音识别文本纠错系统及方法。
背景技术
语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。语音识别技术属于人工智能方向的一个重要分支,涉及许多学科,如信号处理、计算机科学、语言学、声学、生理学、心理学等,是人机自然交互技术中的关键环节。语音识别较语音合成而言,技术上要复杂,但应用却更加广泛。语音识别ASR的最大优势在于使得人机用户界面更加自然和容易使用。就自适应方面而言,语音识别技术有待进一步改进。目前,像IBM的ViaVoice和Asiaworks的SPK都需要用户在使用前进行几百句话的训练,以让计算机适应你的声音特征。这必然限制了语音识别技术的进一步应用,大量的训练不仅让用户感到厌烦,而且加大了系统的负担。因此,必须在自适应方面有进一步的提高。另外,现有较为成熟的语音识别软件,主要针对成年人语音方式进行识别,现实世界的用户类型是多种多样的,就声音特征来讲有男音、女音和童音的区别,而现有的的语音识别软件对童音识别的正确率不是很高。
就算法模型方面而言,需要有进一步的突破。目前能看出它的一些明显不足,尤其在中文语音识别方面,语言模型还有待完善,因为语言模型和声学模型正是听写识别的基础,目前使用的语言模型只是一种概率模型。此外,随着硬件资源的不断发展,一些核心算法如特征提取、搜索算法或者自适应算法将有可能进一步改进。
现有技术中,小学生在写作文过程中,遇到不会书写的汉字时,没有相关技术可以提供很好的帮助。
发明内容
为了克服现有的技术存在的不足,本发明提供一种小学作文语音识别文本纠错系统及方法。
本发明解决其技术问题所采用的技术方案:
小学作文语音识别文本纠错方法,包括如下步骤:
S1.选择目标小学作文训练语料,将选择的目标小学作文训练语料按照句子分成长度小于512字的短句;
S2.使用语音合成服务,分别按照男童音和女童音生成相应的语音文件;
S3.将语音作为模型输入、文本作为模型输出,对语料进行自适应训练下的微调;
S4.根据训练后的深度模型推断小学作文语音的文本。
进一步,所述S1中,具体包括步骤:首先加载相关Python模型,然后分别加载每一篇小学作文文本,加载完成后,对所有文本按照句子进行分割,获得每段文本的字数,筛选出字数在1-512之间的文本,并保存为文本。
进一步,所述S2中,具体包括步骤:首先加载微软相关服务模块,然后将文本转语音配置文件设置为中文童音,读取S1中筛选出的所有文本文件,针对每一个文件使用微软的Asure服务转成对应语音,并按照文本编号对语音文件命名。
进一步,所述S3中,具体包括步骤:
S31.导入Transformers中语音相关的模型;
S32.读取文本语料文件;
S33.获取语音文件名称;
S34.将文本文件与语音文件一一对应;
S35.删除多余的字段;
S36.增加全部语音的音频数字表达;
S37.获得所有小学作文的字典表;
S38.将所有样本分成训练集和验证集;
S39.生成用于深度学习的DataSet;
S310.加载Transformers的语音处理程序;
S311.生成适用于深度学习的训练集和验证集;
S312.定义基于语音的损失函数;
S313.构建基于Wav2Vec2的Transformers模型;
S314.利用Transformers的自训练模型对语音和文本进行训练。
进一步,所述S4中,具体包括步骤:
S41.加载Transformers的语音相关模型;
S42.训练后的模型结果;
S43.加载训练后的模型结果;
S44.配置用于语音识别的模型;
S45.设置分词器,加载训练时的所有小学作文的全部词汇;
S46.设置语音处理接口;
S47.加载对应的语音文件,并获得该语音文件的向量;
S48.对上述语音文件进行预测;
S49.输出对应的文本。
利用所述的小学作文语音识别文本纠错方法的纠错系统,包括存储模块、语音合成模块、语音识别模块、训练模块、文本输出模块,所述存储模块用于存储目标小学作文训练语料文本、短句文本、词汇文本,所述语音合成模块用于读取存储模块中的文本文件,并将其转成对应语音,并存储,所述语音识别模块用于接收语音输入信号,所述训练模块用于将接收语音输入信号进行处理和预测并对语音和文本进行训练,所述文本输出模块用于根据训练模块的预测结果输出对应的文本信息。
有益效果
本发明主要解决小学生在写作文过程中,遇到不会书写的汉字时,通过说出想写的句子,系统会自动快速的提供正确的书写模式,作为参考,帮助学生完成作文的写作。本发明能提高小学生写作的能力,减少在作文中使用拼音及错别字,符合国家对当前小学语文培养的要求。
本发明创新之处在于两个方面:第一,语料采用了131990篇小学作文作为语料作为自训练集,不仅涵盖了小学生全部的汉字,而且对比现有技术,语料及语音的专注性更加适用于小学生作文的应用场景;第二,本发明采用了FaceBook提出的Wav2Vec2.0自学习框架对语料进行自监督训练。传统的语音识别模型主要在有标注的语音样本上进行训练。成熟的系统往往需要大量有标注的数据。基于Wav2Vec2.0自监督学习提供了一种利用未标注的数据来构建更好的系统。简单的的说,本发明在‘wav2vec2-large-xlsr-53-chine se-zh-cn-gpt’预训练集的基础上,将小学作文的文本和语音作为输出和输入,在Transformers框架下进行微调,以达到发明的目的和要求。
附图说明
图1是本发明实施例中模型的流程图;
图2是本发明实施例中模型的流程图;
图3是本发明实施例中模型的流程图;
图4是本发明实施例中模型的流程图;
图5是本发明实施例中模型的流程图;
图6是本发明实施例中模型的流程图;
具体实施方式
具体实施中,本申请小学作文语音识别文本纠错系统及方法,在具体实施中,小学作文语音识别文本纠错方法:
第一部分,先将131990篇小学作文训练语料按照句子分成长度小于512字的短句。
具体包括步骤:
加载相关Python模型;
加载每一篇小学作文文本,文件名为“zuowen.xlsx”;
对所有文本按照句子进行分割;
获得每段文本的字数,筛选出字数在1-512之间的文本,并保存为“qingli_zuowen. txt”。
第二部分,使用微软提供的Azure语音合成服务,分别按照男童音和女童音生成相应的语音文件。具体包括步骤:
加载微软相关服务模块;
将文本转语音配置文件设置为中文童音;
读取第一部分的所有文本文件;
针对每一个文件使用微软的Asure服务转成对应语音,并按照文本编号对语音文件命名。
第三部分,采用Transformers提供的Wav2Vec2框架,将语音作为模型输入、文本作为模型输出,对语料进行自适应训练下的微调。具体包括步骤:
导入Transformers中语音相关的模型;
读取文本语料文件;
获取语音文件名称;
将文本文件与语音文件一一对应;
删除多余的字段;
增加全部语音的音频数字表达;
获得所有小学作文的字典表;
将所有样本分成训练集和验证集;
生成用于深度学习的DataSet;
加载Transformers的语音处理程序;
生成适用于深度学习的训练集和验证集;
定义基于语音的损失函数;
构建基于Wav2Vec2的Transformers模型。
第四部分,根据训练后的深度模型推断小学作文语音的文本。具体包括步骤:
加载Transformers的语音相关模型;
训练后的模型结果;
加载训练后的模型结果;
配置用于语音识别的模型;
设置分词器,文件“vocab.json”为训练时的所有小学作文的全部词汇;
设置语音处理接口;
加载语音文件“60517.wav”,并获得该语音文件的向量;
对上述语音文件进行预测;
输出对应的文本。
利用所述的小学作文语音识别文本纠错方法的纠错系统,包括存储模块、语音合成模块、语音识别模块、训练模块、文本输出模块,所述存储模块用于存储目标小学作文训练语料文本、短句文本、词汇文本,所述语音合成模块用于读取存储模块中的文本文件,并将其转成对应语音,并存储,所述语音识别模块用于接收语音输入信号,所述训练模块用于将接收语音输入信号进行处理和预测并对语音和文本进行训练,所述文本输出模块用于根据训练模块的预测结果输出对应的文本信息。
本发明对小学作文范围内涉及的语音转文本的正确率远高于其他预训练集,小学生在使用该发明时,能显著提高作文水平和写作效率。
获得这种优势的原因在于两个方面:一是,本发明只针对小学作文语音和语料进行自监督训练,比起其他中文预训练集,机器学习的内容更集中,更有针对性。另一方面,本发明使用了自然语言处理最新的技术Wav2Vec2.0模型框架,该技术对语音的处理以及语音对文本的自监督训练的鲁棒性、正确率比传统模型要提高许多。在该模型下进行下游微调任务的效果能达到SOAT水平。
从经济角度来说,使用便捷性和成本也低于同类产品。传统的语音识别工具,如科大讯飞,其产品定价往往几千元以上,而本发明将通过微信小程序的形式提供服务,用户没有成本。
具体实施时,第一部分,先将131990篇小学作文训练语料按照句子分成长度小于51 2字的短句。实现方式如下:
#加载相关Python模型
#-*-coding:utf-8-*-
import pandas as pd
import numpy as np
import time as time
import random
import matplotlib.pyplot as plt
import os
import re
#加载每一篇小学作文文本,文件名为“zuowen.xlsx”
xls_file=pd.ExcelFile('./zuowen.xlsx')
df=xls_file.parse('Sheet1',index_col=None,na_values=['NA'])
df=df[df.content.isnull()==False]
df['content']=df.content.apply(lambda x:x.strip())
df['content']=df.content.apply(lambda x:clean(x))
#对所有文本按照句子进行分割
tb=pd.DataFrame()
for index,row in df.iterrows():
contents=row.content.split('\n')
if len(contents)>0:
for cc in contents:
if len(cc)>0:
contents2=cc.split('。')
if len(contents2)>0:
for cc2 in contents2:
if len(cc2)>0:
text=cc2
dic={'text':text.strip()}
tb=tb.append(pd.DataFrame(dic,index=[0]),ignore_index=True)
#获得每段文本的字数,筛选出字数在1-512之间的文本,并保存为“qingli_zuowen. txt”
tb['length']=tb.text.apply(lambda x:len(x))
tb=tb[(tb.length>1)&(tb.length<512)]
tb.to_csv('./qingli_zuowen.txt',index=False,sep='\t')
第二部分,使用微软提供的Azure语音合成服务,分别按照男童音和女童音生成相应的语音文件。实现方式如下:
#加载微软相关服务模块
from azure.cognitiveservices.speech import AudioDataStream,SpeechConfig,S peechSynthesizer,SpeechSynthesisOutputFormat
from azure.cognitiveservices.speech.audio import AudioOutputConfig
import azure.cognitiveservices.speech as speechsdk
speech_key,service_region="","eastus"
speech_config=speechsdk.SpeechConfig(subscription=speech_key,region=servi ce_region)
#将文本转语音配置文件设置为中文童音
speech_config.speech_synthesis_language="zh-CN"
speech_config.speech_synthesis_voice_name="zh-CN-XiaoyouNeural"
#读取第一部分的所有文本文件
tb=pd.read_csv('./qingli_zuowen.txt',sep='\t',dtype={'text':str})
tb['file_n']=tb.index
import time
#针对每一个文件使用微软的Asure服务转成对应语音,并按照文本编号对语音文件命名
for index,row in tb.iterrows():
text=row.text
file_name='./audio/'+str(index)+'.wav'
audio_config=AudioOutputConfig(filename=file_name)
synthesizer=SpeechSynthesizer(speech_config=speech_config,audio_config=au dio_config)
result=synthesizer.speak_text_async(text).get()
stream=AudioDataStream(result)
stream.save_to_wav_file(file_name)
time.sleep(1)
第三部分,采用Transformers提供的Wav2Vec2框架,将语音作为模型输入、文本作为模型输出,对语料进行自适应训练下的微调。实现方式如下:
#导入Transformers中语音相关的模型
from transformers import Wav2Vec2Processor,Wav2Vec2ForCTC
from datasets import load_dataset
import soundfile as sf
import torch
import torchaudio
#读取文本语料文件
tb=pd.read_csv('./qingli_zuowen.txt',sep='\t',dtype={'text':str})
tb['file_n']=tb.index
#获取语音文件名称
ff=pd.DataFrame()
path="/home/yihuiy/00/store/6小学作文/audio"
for root,dirs,files in os.walk(path):
for name in files:
if name.split('.')[1]=='wav':
dic={'file_n':name.split('.')[0]}
ff=ff.append(pd.DataFrame(dic,index=[0]),ignore_index=True)
ff.sort_values(by=['file_n'],inplace=True,ascending=True)
#将文本文件与语音文件一一对应
tb['file_n']=tb.file_n.astype(str)
ff['file_n']=ff.file_n.astype(str)
tb=tb.merge(
ff,
left_on=['file_n'],right_on=['file_n'],how='outer',indicator=True
)
tb=tb[tb._merge=='both']
tb['text']=tb.text.apply(lambda x:re.sub('[^\u4e00-\u9fa5]+',”,x))
tb['path']=tb.index
tb['path']=tb.path.apply(lambda x:'./audio/'+str(x)+'.wav')
tb['text']=tb.text.astype(str)
#删除多余的字段
df=tb.copy()
df=df.loc[:,['path','text']]
df.rename(columns={'text':'sentence'},inplace=True)
df['audio']=np.nan
df['audio']=df.audio.astype('object')
#增加全部语音的音频数字表达
for index,row in df.iterrows():
file_path=row.path
waveform,sample_rate=torchaudio.load(file_path)
array=waveform.numpy()[0]
path=row.path
sampling_rate=sample_rate
aa=[path,array,sampling_rate]
keys=('path','array','sampling_rate')
ee=dict(zip(keys,aa))
df.at[index,'audio']=ee
#获得所有小学作文的字典表
all_text=”
for index,row in df.iterrows():
all_text+="".join(row.sentence)
vocab=list(set(all_text))
vocab.append("|")
vocab_dict={v:k for k,v in enumerate(vocab)}
vocab_dict["[UNK]"]=len(vocab_dict)
vocab_dict["[PAD]"]=len(vocab_dict)
import json
with open('vocab.json','w')as vocab_file:
json.dump(vocab_dict,vocab_file)
from transformers import Wav2Vec2CTCTokenizer
tokenizer=Wav2Vec2CTCTokenizer("./vocab.json",unk_token="[UNK]",pad_token ="[PAD]",word_delimiter_token="|")
#将所有样本分成训练集和验证集
df_train=df.sample(frac=0.9,random_state=1,replace=False).copy()
df.drop(df_train.index,inplace=True)
df_val=df.copy()
#生成用于深度学习的DataSet
common_voice_train=Dataset.from_pandas(df_train.reset_index(drop=True))
common_voice_test=Dataset.from_pandas(df_val.reset_index(drop=True))
#加载Transformers的语音处理程序
from transformers import Wav2Vec2FeatureExtractor
from transformers import Wav2Vec2Processor
feature_extractor=Wav2Vec2FeatureExtractor(feature_size=1,sampling_rate=1 6000,padding_value=0.0,do_normalize=True,return_attention_mask=False)
processor=Wav2Vec2Processor(feature_extractor=feature_extractor,tokenizer =tokenizer)
#生成适用于深度学习的训练集和验证集
def prepare_dataset(batch):
audio=batch["audio"]
#batched output is"un-batched"
batch["input_values"]=processor(audio["array"],sampling_rate=audio["sampl ing_rate"]).input_values[0]
batch["input_length"]=len(batch["input_values"])
with processor.as_target_processor():
batch["labels"]=processor(batch["sentence"]).input_ids
return batch
common_voice_train=common_voice_train.map(prepare_dataset,remove_columns=common_voice_train.column_names)
common_voice_test=common_voice_test.map(prepare_dataset,remove_columns=co mmon_voice_test.column_names)
data_collator=DataCollatorCTCWithPadding(processor=processor,padding=Tru e)
#定义基于语音的损失函数
from datasets import load_metric
wer_metric=load_metric("wer")
def compute_metrics(pred):
pred_logits=pred.predictions
pred_ids=np.argmax(pred_logits,axis=-1)
pred.label_ids[pred.label_ids==-100]=processor.tokenizer.pad_token_id
pred_str=processor.batch_decode(pred_ids)
#we do not want to group tokens when computing the metrics
label_str=processor.batch_decode(pred.label_ids,group_tokens=False)
wer=wer_metric.compute(predictions=pred_str,references=label_str)
return{"wer":wer}
#构建基于Wav2Vec2的Transformers模型
from transformers import Wav2Vec2ForCTC
model=Wav2Vec2ForCTC.from_pretrained("ydshieh/wav2vec2-large-xlsr-53-chin ese-zh-cn-gpt",
attention_dropout=0.1,
hidden_dropout=0.1,
feat_proj_dropout=0.0,
mask_time_prob=0.05,
layerdrop=0.1,
ctc_loss_reduction="mean",
ignore_mismatched_sizes=True,
pad_token_id=processor.tokenizer.pad_token_id,
vocab_size=len(processor.tokenizer)
#利用Transformers的自训练模型对语音和文本进行训练
from transformers import Trainer,TrainingArguments
training_args=TrainingArguments(
output_dir=f"issues-yw",
group_by_length=True,
per_device_train_batch_size=8,
per_device_eval_batch_size=2,
gradient_accumulation_steps=2,
evaluation_strategy="epoch",
save_strategy="epoch",
num_train_epochs=60,
gradient_checkpointing=True,
dataloader_num_workers=8,
fp16=True,
learning_rate=3e-4,
warmup_steps=500,
logging_strategy="epoch",
dataloader_pin_memory=True
)
trainer=Trainer(
model=model,
data_collator=data_collator,
args=training_args,
compute_metrics=compute_metrics,
train_dataset=common_voice_train,
eval_dataset=common_voice_test,
tokenizer=processor.feature_extractor,
)
trainer.train()
第四部分,根据训练后的深度模型推断小学作文语音的文本。实现方式如下:
#加载Transformers的语音相关模型
import torch
from transformers import BertModel,Wav2Vec2Config,Wav2Vec2CTCTokenizer,Wa v2Vec2FeatureExtractor
from sklearn.metrics.pairwise import cosine_similarity
#训练后的模型结果
MODEL_PATH='./checkpoint-435180/'
#加载训练后的模型结果
model_config=Wav2Vec2Config.from_pretrained(MODEL_PATH)
#配置用于语音识别的模型
model_config.output_hidden_states=True
model_config.output_attentions=True
model=Wav2Vec2ForCTC.from_pretrained(MODEL_PATH,config=model_config)
#设置分词器,文件“vocab.json”为训练时的所有小学作文的全部词汇。
tokenizer=Wav2Vec2CTCTokenizer("./checkpoint-181325/vocab.json",unk_token ="[UNK]",
pad_token="[PAD]",word_delimiter_token="|")
feature_extractor=Wav2Vec2FeatureExtractor(feature_size=1,sampling_rate=1 6000,
padding_value=0.0,do_normalize=True,return_attention_mask=True)
#设置语音处理接口
processor=Wav2Vec2Processor(feature_extractor=feature_extractor,tokenizer =tokenizer)
#加载语音文件“60517.wav”,并获得该语音文件的向量
speech_array,sampling_rate=torchaudio.load("./60517.wav")
aa=speech_array.squeeze().numpy()
#对上述语音文件进行预测
inputs=processor(aa,sampling_rate=16_000,return_tensors="pt",padding=Tru e)
inputs.to(device)
with torch.no_grad():
logits=model(inputs.input_values,attention_mask=inputs.attention_mask).lo gits
predicted_ids=torch.argmax(logits,dim=-1)
#输出对应的文本
print("Prediction:",processor.batch_decode(predicted_ids))。
具体实施中本发明采用的Wav2Vec 2.0作为模型进行训练,该模型是一种使用自监督方法实现的预训练语音识别模型。自监督学习有别于传统的监督学习,是一种不需要预先标记过的训练集,使用较少的训练集就可以达到较好的训练效果的模型。基于这种原理实现的Wav2Vec 2.0模型实现了使用未预先标记的训练集进行语音识别的目的。与其他语音识别模型相比,该模型可以应用于更大量的数据集上。如图1所示,该模型的主要创新点和优势体现在模型的第一阶段。
Wav2Vec 2.0模型的基本框架
模型最终由三部分组成,如图2所示:
编码器:将输入的语音声波X提取成潜在特征Z;
Transformer层:根据潜在特征Z创造上下文表达C;
输出层:将上下文表达C映射成文字形式进行最终输出;
本模型在对比学习(contrastive learning)的基础上加入BERT模型的核心思想Mlm,从而实现了自监督学习。本模型与其他模型的区别在于本模型并没有使用一些已经具有线性映射关系的数据集对模型进行训练。
对比学习Contrastive learning
对比学习是一种无监督学习思想,通过两种不同的方式来将同一个样本输入两次,然后训练模型来判断他们是否是同一个样本。其主要目标在于将样本空间中相似的样本尽可能的靠近,不同的样本尽可能的相互远离。在本模型中,对比学习的两种输入学习方式分别为Transformer和Quantization,如图3所示,当某个潜在表达Zt被mask掉,我们希望通过一个上下文内容表达Ct来让模型从一些选项中找出被mask的Zt。
量化(Quantization)
Quantization是将连续范围的值转换为有限范围的离散值的过程。这是模数转换器的一项功能,它创建一系列数字来表示原始模拟信号。我们假设一个潜在的语音表示向量 z涵盖两个音素,一种语言中的音素数量和可能的音素对的数量都是有限的,也就是说它们可以被同一个潜在的语音表征所完美地代表。正因为它们的数量是有限的,所以我们可以创建一个包含所有可能的音素对的编码本,而Quantization的过程就是从编码本中选择正确的编码词的过程。音素的总量是巨大的,为了更好的训练模型,本模型创建了G个编码本,每个编码本由V个编码词组成。模型通过Gumbel softmax公式从每个编码本中获取相似度最高的编码词,具体公式和流程图展示如图4。
sim-余弦相似度,
l∈RGxV-log(z),
nk=-log(-log(uk)),
uK从标准均匀分布中随机去取出
τ-温度
本模型的选择函数使用的Gumbel softmax与经典的softmax函数相比,Cumbesoftmax会随机从编码本中获取编码词,并且引入了退火算法中的温度超参数。温度系数虽然只是一个超参数,但它的设置直接影响模型的效果。温度系数可以用来控制的分布形状。对于既定的分布,如果温度系数设的越大,l分布变得越平滑,那么对比损失会对所有的负样本一视同仁,导致模型学习没有轻重。如果温度系数设的过小,则模型会越关注特别困难的负样本,但其实那些负样本很可能是潜在的正样本,这样会导致模型很难收敛或者泛化能力差。总之,温度系数的作用就是它控制了模型对负样本的区分度。
掩盖(Masking)
本模型的创新点在于引入了BERT框架的Mlm,作为Mlm的核心思想,这里对本模型的Mask设定进行介绍。Masking是一种常见于自然语言处理的自监督学习方法组成部分,其核心思想是将未标记的数据集中的一部分掩盖掉,让模型通过潜在特征对被遮掩掉的部分进行推断,并将推断结果与被掩盖掉的真实结果进行比对,计算损失函数,从而让自学习模型在未标记过的数据集中进行训练。在本模型中,输入音频的每一帧被选为mask 区域起点的概率p是0.065,mask长度M为10,最终效果大概会有49%的帧被mask掉,平均mask长度为14.7帧。下面展示Masking方法的流程:
1.从潜在语音表达空间Z中抽取所有的时间戳;
2.对上一步的时间戳进行无替换p次无替换抽样;
3.将被抽中的时间戳作为起始时间;
4.对于被抽中的时间戳,每个时间戳之后的M个时间单位音频作为被掩盖的部份。
在图5-6中,我们举例两个向量被掩盖的步骤。
然后,从每个被选中的向量开始,M=10个前后连续的向量被掩盖。掩盖的向量是可以重叠的,所以最终我们掩盖了14个连续的向量。
最后我们以被掩盖的14个向量的中间向量作为对比损失度的计算标量。
模型训练目标
本模型的训练目标是两个损失函数的总和:对比损失和多样性损失。目前,只提到了对比损失。对比损失的定义公式如下:
字母K是一个温度,在训练期间是恒定的。Sim代表余弦相似度。函数L的主要部分与softmax相似,区别在于不采用分数,而是采用上下文表征c和量化表达q之间的余弦相似度,为了简便计算,我们对函数整体取对数值。
多样性损失是一种泛化技术。我们设置了G=2个编码本,每个编码本中有V=320个编码词。理论上,它提供了320*320=102400种可能的量化表达。但是为了保证模型会最大化利用这多达102400种量化表达,而不是局限于其中的某一部分,我们需要基于熵理论的多样性损失作为一种惩罚项来监督模型尽可能多的使用不同量化表达。熵函数的具体计算公式如下:
其中:
. x-随机变量χ可能的结票
. P(x)-x事件发生的概率
当模型选取的编码词均匀分布时,熵的值最大借此我们用多样性损失来促使模型更广泛的使用所有的编码词,而不是局限于某一些范围内。由此我们得到的多样性损失函数如下所示:
微调
最后,我们再Wav2Vec 2.0模型的微调阶段在上下文表征C的基础上增加了一个随机初始化的线性投影层,然后用时序分类算法(CTC)和改进版的SpecAugment方法对模型进行微调。
本发明Wav2Vec 2.0模型的基础上,使用了一种自动语音识别的自监督学习方法,它是基于对比学习的框架,可以使用未经标注的数据进行学习,使用较少的数据量来达到令人满意的预测效果。
由技术常识可知,本发明可以通过其它的不脱离其精神实质或必要特征的实施方案来实现。上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。
Claims (6)
1.小学作文语音识别文本纠错方法,其特征在于,包括如下步骤:
S1.选择目标小学作文训练语料,将选择的目标小学作文训练语料按照句子分成长度小于512字的短句;
S2.使用语音合成服务,分别按照男童音和女童音生成相应的语音文件;
S3.将语音作为模型输入、文本作为模型输出,对语料进行自适应训练下的微调;
S4.根据训练后的深度模型推断小学作文语音的文本。
2.根据权利要求1所述的小学作文语音识别文本纠错方法,其特征在于,所述S1中,具体包括步骤:首先加载相关Python模型,然后分别加载每一篇小学作文文本,加载完成后,对所有文本按照句子进行分割,获得每段文本的字数,筛选出字数在1-512之间的文本,并保存为文本。
3.根据权利要求2所述的小学作文语音识别文本纠错方法,其特征在于,所述S2中,具体包括步骤:首先加载微软相关服务模块,然后将文本转语音配置文件设置为中文童音,读取S1中筛选出的所有文本文件,针对每一个文件使用微软的Asure服务转成对应语音,并按照文本编号对语音文件命名。
4.根据权利要求3所述的小学作文语音识别文本纠错方法,其特征在于,所述S3中,具体包括步骤:
S31.导入Transformers中语音相关的模型;
S32.读取文本语料文件;
S33.获取语音文件名称;
S34.将文本文件与语音文件一一对应;
S35.删除多余的字段;
S36.增加全部语音的音频数字表达;
S37.获得所有小学作文的字典表;
S38.将所有样本分成训练集和验证集;
S39.生成用于深度学习的DataSet;
S310.加载Transformers的语音处理程序;
S311.生成适用于深度学习的训练集和验证集;
S312.定义基于语音的损失函数;
S313.构建基于Wav2Vec2的Transformers模型;
S314.利用Transformers的自训练模型对语音和文本进行训练。
5.根据权利要求4所述的小学作文语音识别文本纠错方法,其特征在于,所述S4中,具体包括步骤:
S41.加载Transformers的语音相关模型;
S42.训练后的模型结果;
S43.加载训练后的模型结果;
S44.配置用于语音识别的模型;
S45.设置分词器,加载训练时的所有小学作文的全部词汇;
S46.设置语音处理接口;
S47.加载对应的语音文件,并获得该语音文件的向量;
S48.对上述语音文件进行预测;
S49.输出对应的文本。
6.利用权利要求5所述的小学作文语音识别文本纠错方法的纠错系统,其特征在于,包括存储模块、语音合成模块、语音识别模块、训练模块、文本输出模块,所述存储模块用于存储目标小学作文训练语料文本、短句文本、词汇文本,所述语音合成模块用于读取存储模块中的文本文件,并将其转成对应语音,并存储,所述语音识别模块用于接收语音输入信号,所述训练模块用于将接收语音输入信号进行处理和预测并对语音和文本进行训练,所述文本输出模块用于根据训练模块的预测结果输出对应的文本信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211266801.3A CN115547334A (zh) | 2022-10-17 | 2022-10-17 | 小学作文语音识别文本纠错系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211266801.3A CN115547334A (zh) | 2022-10-17 | 2022-10-17 | 小学作文语音识别文本纠错系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115547334A true CN115547334A (zh) | 2022-12-30 |
Family
ID=84735122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211266801.3A Pending CN115547334A (zh) | 2022-10-17 | 2022-10-17 | 小学作文语音识别文本纠错系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115547334A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519999A (zh) * | 2018-03-07 | 2018-09-11 | 华中师范大学 | 一种小学语文写作提纲辅助及语音写作方法与装置 |
CN111145728A (zh) * | 2019-12-05 | 2020-05-12 | 厦门快商通科技股份有限公司 | 语音识别模型训练方法、系统、移动终端及存储介质 |
CN111199727A (zh) * | 2020-01-09 | 2020-05-26 | 厦门快商通科技股份有限公司 | 语音识别模型训练方法、系统、移动终端及存储介质 |
CN111554272A (zh) * | 2020-04-27 | 2020-08-18 | 天津大学 | 一种面向中文语音识别的语言模型建模方法 |
CN112634860A (zh) * | 2020-12-29 | 2021-04-09 | 苏州思必驰信息科技有限公司 | 儿童语音识别模型训练语料筛选方法 |
CN113223506A (zh) * | 2021-05-28 | 2021-08-06 | 思必驰科技股份有限公司 | 语音识别模型训练方法及语音识别方法 |
CN113380237A (zh) * | 2021-06-09 | 2021-09-10 | 中国科学技术大学 | 增强局部依赖关系无监督预训练语音识别模型及训练方法 |
CN113643694A (zh) * | 2021-08-17 | 2021-11-12 | 科大讯飞股份有限公司 | 语音识别方法、装置、电子设备和存储介质 |
CN114582329A (zh) * | 2022-03-03 | 2022-06-03 | 北京有竹居网络技术有限公司 | 语音识别方法、装置、计算机可读介质及电子设备 |
CN114708868A (zh) * | 2022-03-17 | 2022-07-05 | 北京中科智加科技有限公司 | 一种文本顺滑的语音识别方法、系统及存储介质 |
CN115019773A (zh) * | 2022-06-27 | 2022-09-06 | 科大讯飞股份有限公司 | 语音识别方法及相关装置、电子设备、存储介质 |
-
2022
- 2022-10-17 CN CN202211266801.3A patent/CN115547334A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519999A (zh) * | 2018-03-07 | 2018-09-11 | 华中师范大学 | 一种小学语文写作提纲辅助及语音写作方法与装置 |
CN111145728A (zh) * | 2019-12-05 | 2020-05-12 | 厦门快商通科技股份有限公司 | 语音识别模型训练方法、系统、移动终端及存储介质 |
CN111199727A (zh) * | 2020-01-09 | 2020-05-26 | 厦门快商通科技股份有限公司 | 语音识别模型训练方法、系统、移动终端及存储介质 |
CN111554272A (zh) * | 2020-04-27 | 2020-08-18 | 天津大学 | 一种面向中文语音识别的语言模型建模方法 |
CN112634860A (zh) * | 2020-12-29 | 2021-04-09 | 苏州思必驰信息科技有限公司 | 儿童语音识别模型训练语料筛选方法 |
CN113223506A (zh) * | 2021-05-28 | 2021-08-06 | 思必驰科技股份有限公司 | 语音识别模型训练方法及语音识别方法 |
CN113380237A (zh) * | 2021-06-09 | 2021-09-10 | 中国科学技术大学 | 增强局部依赖关系无监督预训练语音识别模型及训练方法 |
CN113643694A (zh) * | 2021-08-17 | 2021-11-12 | 科大讯飞股份有限公司 | 语音识别方法、装置、电子设备和存储介质 |
CN114582329A (zh) * | 2022-03-03 | 2022-06-03 | 北京有竹居网络技术有限公司 | 语音识别方法、装置、计算机可读介质及电子设备 |
CN114708868A (zh) * | 2022-03-17 | 2022-07-05 | 北京中科智加科技有限公司 | 一种文本顺滑的语音识别方法、系统及存储介质 |
CN115019773A (zh) * | 2022-06-27 | 2022-09-06 | 科大讯飞股份有限公司 | 语音识别方法及相关装置、电子设备、存储介质 |
Non-Patent Citations (1)
Title |
---|
胡来林;: "语音识别支持写作困难学生的个案研究", 中国电化教育, no. 03 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113470662B (zh) | 生成和使用用于关键词检出系统的文本到语音数据和语音识别系统中的说话者适配 | |
Odell | The use of context in large vocabulary speech recognition | |
CN111125333B (zh) | 一种基于表示学习与多层覆盖机制的生成式知识问答方法 | |
CN110795945A (zh) | 一种语义理解模型训练方法、语义理解方法、装置及存储介质 | |
CN110807333A (zh) | 一种语义理解模型的语义处理方法、装置及存储介质 | |
Yu et al. | Acoustic modeling based on deep learning for low-resource speech recognition: An overview | |
EP4235485A1 (en) | Method for converting text data into acoustic feature, electronic device, and storage medium | |
Dunbar et al. | Self-supervised language learning from raw audio: Lessons from the zero resource speech challenge | |
Orken et al. | Identifying the influence of transfer learning method in developing an end-to-end automatic speech recognition system with a low data level | |
CN115186056A (zh) | 文本风格迁移方法、装置、电子设备及存储介质 | |
US11887583B1 (en) | Updating models with trained model update objects | |
CN115376547B (zh) | 发音评测方法、装置、计算机设备和存储介质 | |
Labbé et al. | Multitask learning in Audio Captioning: a sentence embedding regression loss acts as a regularizer | |
Singh et al. | MECOS: A bilingual Manipuri–English spontaneous code-switching speech corpus for automatic speech recognition | |
Amoolya et al. | Automatic speech recognition for Tulu Language using GMM-HMM and DNN-HMM techniques | |
Wang et al. | Assessing phrase break of esl speech with pre-trained language models and large language models | |
CN111090720B (zh) | 一种热词的添加方法和装置 | |
CN115547334A (zh) | 小学作文语音识别文本纠错系统及方法 | |
Getman | End-to-end low-resource automatic speech recognition for second language learners | |
Thatphithakkul et al. | LOTUS-BI: A Thai-English code-mixing speech corpus | |
Ungureanu et al. | pROnounce: Automatic Pronunciation Assessment for Romanian | |
US20240290321A1 (en) | Chunk-wise attention for longform asr | |
US20240046920A1 (en) | Data processing method, device wake-up method, electronic device and storage medium | |
Görmez | Customized deep learning based Turkish automatic speech recognition system supported by language model | |
Müller | Multilingual Modulation by Neural Language Codes |
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 |