python 指定フレームでのスペクトルとメルケプストラムを描画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 指定フレームでのスペクトルとメルケプストラムを描画相关的知识,希望对你有一定的参考价值。

import subprocess

def extract_binary_mcep(wav_file, mcep_file):
    cmd = "bcut +s -s 22 %s | x2x +sf | frame -p 80 | window | mcep -m 25 -a 0.42 > %s" % (wav_file, mcep_file)
    subprocess.call(cmd, shell=True)

def draw_mcep_at_frame(wav_file, mcep_file, frame):
    # frame位置でのスペクトルを求める
    cmd = "bcut +s -s 22 %s | x2x +sf | frame -p 80 | bcut +f -l 256 -s %d -e %d | window | spec | dmp +f > spec.txt" % (wav_file, frame, frame)
    subprocess.call(cmd, shell=True)
    
    # frame位置でのメルケプストラムをスペクトルに変換
    cmd = "bcut +f -n 25 -s %d -e %d < %s | mgc2sp -m 25 -a 0.42 | dmp +f > mcep.txt" % (frame, frame, mcep_file)
    subprocess.call(cmd, shell=True)

    # スペクトルとメルケプストラムを描画
    spec = np.loadtxt("spec.txt")
    plt.plot(spec[:, 1])

    mcep = np.loadtxt("mcep.txt")
    plt.plot(mcep[:, 1], "r-", lw=2)
    
    plt.xlabel("frequency bin")
    plt.ylabel("log magnitude")
    plt.show()

frame = 50

wav_file = "wav/clb/arctic_a0005.wav"
mcep_file = "clb_a0005.mcep"
extract_binary_mcep(wav_file, mcep_file)
draw_mcep_at_frame(wav_file, mcep_file, frame)

wav_file = "wav/slt/arctic_a0005.wav"
mcep_file = "slt_a0005.mcep"
extract_binary_mcep(wav_file, mcep_file)
draw_mcep_at_frame(wav_file, mcep_file, frame)

以上是关于python 指定フレームでのスペクトルとメルケプストラムを描画的主要内容,如果未能解决你的问题,请参考以下文章

python メルケプストラムの时系列を描画

python アラインメントを取ったメルケプストラムを描画する

python DTWを用いてアラインメントを取ったメルケプストラムを出力する

その他トランザクションコード

markdown CSSで16:9のアスペクト比を保持する方法

css 画像のアスペクト比,サイズを合わせるCSSプロパティ