在语音信号中标注口语
这个例子展示了如何给口语贴上标签信号贴标签机.该示例使用wav2vec 2.0预训练网络,需要深度学习工具箱™并安装预训练模型。有关下载和安装wav2vec 2.0预训练模型的详细信息,请参见speech2text
(音频工具箱).
音频文件读入
加载一个音频数据文件,其中包含“实值信号的离散傅里叶变换是共轭对称的”这句话。
[y,fs] = audioread(“speech_dft.wav”);输入soundsc(y,fs)
定义标签
开放信号贴标签机并定义要附加到信号上的标签。点击添加在贴标签机选项卡,然后添加标签定义.指定标签名称作为单词
,选择标签类型的ROI
,并选择数据类型的字符串
.
导入语音数据
将信号导入应用程序。
在贴标签机选项卡上,单击进口并选择
从工作空间
在成员列表。在对话框中,选择信号y
.添加时间信息。选择
时间
,并指定fs
为采样率,单位为Hz。点击导入和关闭.信号出现在标记信号集浏览器.
定位和识别口语
定位并识别输入信号中所说的单词。
选择
单词
在标签定义浏览器。在自动化的价值画廊,选择
从语音到文本
.点击Auto-Label并选择
自动标记所有信号
.在对话框中,选择
wav2vec 2.0
从服务名称列出并选中旁边的复选框段话。点击好吧.
信号贴标签机定位并标注语音。在标记信号集浏览器,选中右侧的复选框y
画出信号。扩大单词
并选择每个单词旁边的复选框,以可视化相应的标记区域。注意,“离散的”这个词被错误地标记为“谨慎的”。您可以通过右键单击来纠正此错误谨慎的
在价值列,选择编辑,并输入正确的值“discrete”。
输出标记信号
导出标记的信号。在贴标签机选项卡上,单击出口并选择到文件
从标记信号集列表。在出现的对话框中,给出名称Transcription.mat
并添加可选的简短描述。点击出口.
回到MATLAB命令窗口。加载标记的信号集。集合只有一个成员。获取标签的名称,并使用该名称获取和显示转录的单词。
负载转录ln = getLabelNames(ls);v = getLabelValues(ls,1,ln)
v =12×2表ROILimits值__________________ ___________ 0.34063 0.4208 " 0.46088 0.82161 "离散" 0.88174 1.2826 "傅里叶" 1.3427 1.984 "变换" 2.0441 2.1042 "的" 2.1644 2.2044 "一个" 2.2846 2.485 "实" 2.5251 2.8658 "有值" 2.9259 3.3067 "信号" 3.3869 3.467 "是" 3.5271 4.0081 "共轭" 4.0482 4.5091 "对称"
将标签值从字符串更改为类别。使用一个signalMask
对象为每个单词使用不同的颜色绘制信号。
v.Value = category (v.Value,v.Value);msk = signalMask(v,SampleRate=fs);s = getSignal(ls,1);s.y plotsigroi (msk)
创建一个与音频信号长度相同的逻辑向量。将向量设置为真正的
其中语音信号的相应部分包含单词“共轭”。
BSL = binmask(msk,height(s));情节(s.Time [s。y声波测井(:,v。值= =“共轭”)))