语音技术随笔-初识语音识别

语音技术随笔-初识语音识别-时域角度

人类在发音时,通过肺部气流经过气管,然后引起声带震动,形成声源,声源带动空气震动向前传播,形成波形(Waveform)(可以联想出波形图的特点:频率、相位、幅度)。由于我们计算机只能处理可计算问题,可计算问题一个基本前提是数据是有限长度的,计算机通过传感器得到的波形图,我们需要进行采样(Sampling),形成电压随着时间变化的波形,计算机中,时间是离散的,在某个时刻的电压也是离散的,这就形成了语音的数字信号。随后还需要进行量化,量化的过程是将每个采样值在幅度上再进行离散化处理,变成整数型数值,一般采用16位的数值进行量化。具体我们可以用python工具对wav文件进行采样,具体绘制的方法和效果如下所示。

具体代码为:

import scipy.io
import scipy.io.wavfile
import numpy as np
import matplotlib.pyplot as plt

wavedata = "wav文件.wav"

sampleRate, audioBuffer = scipy.io.wavfile.read(wavedata)
duration = len(audioBuffer)/sampleRate

time = np.arange(0,duration,1/sampleRate)

plt.plot(time,audioBuffer)
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title(wavedata)
plt.show()

在这里插入图片描述

我们再看看语音文件的格式,我用mac电脑随便打开一个wav文件,显示如下:
在这里插入图片描述

我们可以看到持续时间、音频声道、采样速率和每个样本的位数,这些与语音文件息息相关,持续时间就是音频的总时间,这个不多说了,音频声道是1,代表单声道语音,这个是为了区别后续的多声道,比如现在麦克风阵列录音设备可以形成多个声道,我是使用iphone录制的,很显然我这个文件只能是单通道。采样速率(Sample Rate)这里是16kHz,代表这个文件每秒钟形成了多达16000个电压值。秒是人最常能感受的的时间单位,滴答一秒就过去了,非常快,而这个文件一秒钟形成了16000采样点,可以说通过这么密集的采样,基本上能完美还原原有的波形图了。每个样本的位数(Precision)就是上述提到的采样位数,量化的过程是将每个采样值在幅度上再进行离散化处理,这里幅度指的就是波形图的纵坐标,位数决定了纵坐标有多少个“刻度”,这里是16位,2个16次方=65535,也就是我们可以用65535个刻度来对波形图的纵坐标进行量化。

说到这里,我们发现,其实采样速率是横坐标上的“刻度”,量化是纵坐标上的“刻度”,两者相乘就是比特率,即一秒钟内音频的数据大小,这里的比特率就是16*16=256 kb/s,文件大小粗略通过公示计算:比特率*时长。

这一章节,我们通过一个简单的python读取wav音频的例子理解了声音的时序变化特征,即电压随着时间变化的离散数值。这是观察语音的第一个角度,通过观察这些特征,其实我们已经可以做出一个分析,比如可以进行语音端点检测(VAD)任务了。下面,我们从另外一个角度——频域角度来认识语音。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值