前提・実現したいこと
Pythonのプログラミングでの質問です
スぺクトログラムの表示などをするプログラムです
下にあるプログラムなのですがどうも配列の数が合わずどうすればいいかご教授願いたいです。
質問するのは初めてなためお手柔らかにお願いします---
発生している問題・エラーメッセージ
ValueError: operands could not be broadcast together with shapes (27200,) (27264,)
修正後のソースコード
Python
1# モジュールのインポート 2import numpy as np 3import matplotlib.pyplot as plt 4import soundfile as sf 5import scipy 6from scipy import signal as sg 7 8# 音声の読み込み 9x, fs = sf.read('speech1.wav') 10 11window_num = 256 # 窓幅のデータ数 12stride_num = 128 # ストライド幅のデータ数 13 14# スペクトログラムの計算 15f, t, X1 = sg.stft(x, fs=fs, nperseg=window_num, noverlap=(window_num-stride_num)) 16 17# 逆STFTによる復号 18_, y = sg.istft(X1, fs=fs, nperseg=window_num, noverlap=(window_num-stride_num)) 19 20# 出力音声の保存 21sf.write('outout.wav', y, fs) 22 23# グラフに表示 24# - 波形 25plt.figure('Original waveform') 26plt.plot(x) 27 28# - 復号した波形 29plt.figure('Decryption waveform') 30plt.plot(y) 31 32# - 信号差の波形(ここが分からない。入力信号xと出力信号yの差信号x−yが求めたい) 33plt.figure('Signal difference waveform') 34plt.plot(x-y) 35
試したこと
質問への回答を受け下記サイトからnperseg、noverlapを用いて要素数をそろえられないかと試した。 https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.istft.html
scipyのドキュメントを見てもそのような構文は見当たらないです。
https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.stft.html
何を参照していますでしょうか?
stft,istftに所で揃えられないかと思い
https://jp.mathworks.com/help/signal/ref/stft.html
ここを参照しました
それは有償パッケージなのでscipyとは似て非なるものですね。ググると紛らわしいです。そのことについて回答します。
回答1件
あなたの回答
tips
プレビュー