无法提取delta和delta delta功率谱计算

时间:2017-02-09 01:01:50

标签: speech-recognition kaldi

我目前正在尝试使用kaldi提供的add-deltas二进制文件来提取delta + delta-delta。但由于某种原因,我无法提取它。

我通常使用make_spectrum.sh脚本提取功率谱。 我稍微修改了它以包括增量,但输出与没有增量部分的输出没有任何不同。

我做错了什么?

$cmd JOB=1:$nj $logdir/spect_${name}.JOB.log \
    compute-spectrogram-feats --frame-length=25 --frame-shift=10 --verbose=2 \
     scp,p:$logdir/wav_spect_${name}.JOB.scp ark:- \| \
    copy-feats --compress=$compress $write_num_frames_opt ark:- \
      ark,scp:$specto_dir/raw_spectogram_$name.JOB.ark,$specto_dir/raw_spectogram_$name.JOB.scp \| \
      add-deltas ark:- ark,scp:$specto_dir/raw_spectogram_$name.JOB.ark,$specto_dir/raw_spectogram_$name.JOB.scp \

1 个答案:

答案 0 :(得分:2)

管道中每个命令的输出都传递给下一个命令。无法将输出写入文件并在同一时间将其传递给下一个命令。您正尝试在compress-feats中编写数据,同时尝试将其传递给add-delta。

您无法使用单个命令同时编写原始专长和增量专长。你可以写一些增量而不用将raw-stdout of compute-feats写成add-deltas:

$cmd JOB=1:$nj $logdir/spect_${name}.JOB.log \
    compute-spectrogram-feats --frame-length=25 --frame-shift=10 --verbose=2 \
      scp,p:$logdir/wav_spect_${name}.JOB.scp ark:- \| 
    add-deltas ark:- ark,scp:$specto_dir/delta_spectogram_$name.JOB.ark,$specto_dir/delta_spectogram_$name.JOB.scp

或者运行两个工作:

$cmd JOB=1:$nj $logdir/spect_${name}.JOB.log \
    compute-spectrogram-feats --frame-length=25 --frame-shift=10 --verbose=2 \
     scp,p:$logdir/wav_spect_${name}.JOB.scp ark:- \| \
    copy-feats --compress=$compress $write_num_frames_opt ark:- \
      ark,scp:$specto_dir/raw_spectogram_$name.JOB.ark,$specto_dir/raw_spectogram_$name.JOB.scp

$cmd JOB=1:$nj $logdir/spect_${name}_deltas.JOB.log \
      add-deltas scp:$specto_dir/raw_spectogram_$name.JOB.scp ark,scp:$specto_dir/delta_spectogram_$name.JOB.ark,$specto_dir/delta_spectogram_$name.JOB.scp \

可以使用命名管道进行技巧,将这两者组合在一个命令中,但我不建议这样做。简单地运行上面的单个作业

更简单