本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】教程 | 如何使用TensorFlow构建、训练和改进循环神经网络(2)

时间:2017-03-26 03:15来源:天下彩论坛 作者:本港台直播 点击:
为了让模型更易获取数据,我们将所有数据存储为同一格式。每条数据由一个.wav 文件和一个.txt 文件组成。例如:Librispeech 的『211-122425-0059』 在 Github 中

为了让模型更易获取数据,我们将所有数据存储为同一格式。每条数据由一个.wav 文件和一个.txt 文件组成。例如:Librispeech 的『211-122425-0059』 在 Github 中对应着 211-122425-0059.wav 与 211-122425-0059.txt。这些数据的文件使用数据集对象类被加载到 TensorFlow 图中,这样可以让 TensorFlow 在加载、预处理和载入单批数据时效率更高,节省 CPU 和 GPU 内存负载。数据集对象中数据字段的示例如下所示:

  classDataSet:

  def__init__(self, txt_files, thread_count, batch_size, numcep, numcontext):

  # ...

  deffrom_directory(self, dirpath, start_idx=0, limit=0, sort=None):

  returntxt_filenames(dirpath, start_idx=start_idx, limit=limit, sort=sort)

  defnext_batch(self, batch_size=None):

  idx_list =range(_start_idx, end_idx)

  txt_files =[_txt_files[i] fori inidx_list]

  wav_files =[x.replace('.txt', '.wav') forx intxt_files]

  # Load audio and text into memory

  (audio, text) =get_audio_and_tran(

  txt_files,

  wav_files,

  _numcep,

  _numcontext)

特征表示

为了让机器识别音频数据,数据必须先从时域转换为频域。有几种用于创建音频数据机器学习特征的方法,包括任意频率的 binning(如 100Hz),或人耳能够感知的频率的 binning。这种典型的语音数据转换需要计算 13 位或 26 位不同倒谱特征的梅尔倒频谱系数(MFCC)。在转换之后,数据被存储为时间(列)和频率系数(行)的矩阵。

【j2开奖】教程 | 如何使用TensorFlow构建、训练和改进循环神经网络

因为自然语言的语音不是独立的,它们与字母也不是一一对应的关系,我们可以通过训练神经网络在声音数据上的重叠窗口(前后 10 毫秒)来捕捉协同发音的效果(一个音节的发音影响了另一个)。以下代展示了如何获取 MFCC 特征,以及如何创建一个音频数据的窗口。

  # Load wav files

  fs, audio =wav.read(audio_filename)

  # Get mfcc coefficients

  orig_inputs =mfcc(audio, samplerate=fs, numcep=numcep)

  # For each time slice of the training set, we need to copy the context this makes

  train_inputs =np.array([], np.float32)

  train_inputs.resize((orig_inputs.shape[0], numcep +2*numcep *numcontext))

  fortime_slice inrange(train_inputs.shape[0]):

  # Pick up to numcontext time slices in the past,

  # And complete with empty mfcc features

  need_empty_past =max(0, ((time_slices[0] +numcontext) -time_slice))

  empty_source_past =list(empty_mfcc forempty_slots inrange(need_empty_past))

  data_source_past =orig_inputs[max(0, time_slice -numcontext):time_slice]

  assert(len(empty_source_past) +len(data_source_past) ==numcontext)

  ...

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容