正文
None
):
return
txt_filenames(dirpath, start_idx
=
start_idx, limit
=
limit, sort
=
sort)
def
next_batch(
self
, batch_size
=
None
):
idx_list
=
range
(_start_idx, end_idx)
txt_files
=
[_txt_files[i]
for
i
in
idx_list]
wav_files
=
[x.replace(
'.txt'
,
'.wav'
)
for
x
in
txt_files]
(audio, text)
=
get_audio_and_transcript(
txt_files,
wav_files,
_numcep,
_numcontext)
特征表示
为了让机器识别音频数据,数据必须先从时域转换为频域。有几种用于创建音频数据机器学习特征的方法,包括任意频率的 binning(如 100Hz),或人耳能够感知的频率的 binning。这种典型的语音数据转换需要计算 13 位或 26 位不同倒谱特征的梅尔倒频谱系数(MFCC)。在转换之后,数据被存储为时间(列)和频率系数(行)的矩阵。
因为自然语言的语音不是独立的,它们与字母也不是一一对应的关系,我们可以通过训练神经网络在声音数据上的重叠窗口(前后 10 毫秒)来捕捉协同发音的效果(一个音节的发音影响了另一个)。以下代码展示了如何获取 MFCC 特征,以及如何创建一个音频数据的窗口。
fs, audio
=
wav.read(audio_filename)
orig_inputs
=
mfcc(audio, samplerate
=
fs, numcep
=
numcep)
train_inputs
=
np.array([], np.float32)
train_inputs.resize((orig_inputs.shape[
0