2
Audacityを使用して作成されたものと同様のオーディオサンプルのプロットスペクトルを作成しようとしています。 Audacityののwikiページからは、プロットスペクトル(添付の例では)実行します。スペクトラムは、「サイズ」サンプルのブロックでオーディオを取る FFTを行い、そして一緒に平均化し、すべてのブロックテンソルフローの適切な使用STFT関数
プロットを。
私は最近、Tensorflowで提供STFT機能を使用するだろうと考えました。
私はサイズ512のオーディオブロックを使用していて、次のように私のコードは次のとおりです。私は(512の各フレームのFFTの結果を期待するとき
audio_binary = tf.read_file(audio_file)
waveform = tf.contrib.ffmpeg.decode_audio(
audio_binary,
file_format="wav",
samples_per_second=4000,
channel_count=1
)
stft = tf.contrib.signal.stft(
waveform,
512, # frame_length
512, # frame_step
fft_length=512,
window_fn=functools.partial(tf.contrib.signal.hann_window, periodic=True), # matches audacity
pad_end=True,
name="STFT"
)
をしかし、STFTの結果であるが、単に空の配列でありますサンプル)
私がこの電話をかける方法は何ですか?
通常の波形音声データが正しく読み取られていることを確認しました。これは通常のtf.fft
機能でのみ読み取られています。
私はそれを理解しました... 'tf.contrib.signal.stft'はそれぞれ独自の信号データを持つ複数の信号を取ります。したがって、フォーム(signals、signal_data)になります。 'tf.contrib.ffmpeg.decode_audio'は、形式(signal_data、1)の単一の信号のデータを返します。 だから私は '波形'を転置する必要があった – TheBottleSeller