前提・実現したいこと
スペクトラルノイズ除去による雑音除去
https://www.ai-shift.co.jp/techblog/1305
こちらのサイトを使って、ノイズ除去を実行したいと思っています。
下から5行目の
noise_stft = _stft(noise_clip, n_fft, hop_length, win_length)
の部分でNameError:name'noise_clip' is not definedがでます。
サイトのどの部分を見てもnoise_clipはその12行目だけにしかないです。
解決方法分かればお願いします。
発生している問題・エラーメッセージ
NameError:name'noise_clip' is not defined
該当のソースコード
import numpy as np from scipy.ndimage import maximum_filter1d def envelope(y, rate, threshold): """ Args: - y: 信号データ - rate: サンプリング周波数 - threshold: 雑音判断するしきい値 Returns: - mask: 振幅がしきい値以上か否か - y_mean: Sound Envelop """ y_mean = maximum_filter1d(np.abs(y), mode="constant", size=rate//20) mask = [mean > threshold for mean in y_mean] return mask, y_mean n_fft=2048 # STFTカラム間の音声フレーム数 hop_length=512 # STFTカラム間の音声フレーム数 win_length=2048 # ウィンドウサイズ n_std_thresh=1.5 # 信号とみなされるために、ノイズの平均値よりも大きい標準偏差(各周波数レベルでの平均値のdB)が何個あるかのしきい値 def _stft(y, n_fft, hop_length, win_length): return librosa.stft(y=y, n_fft=n_fft, hop_length=hop_length, win_length=win_length) def _amp_to_db(x): return librosa.core.amplitude_to_db(x, ref=1.0, amin=1e-20, top_db=80.0) noise_stft = _stft(noise_clip, n_fft, hop_length, win_length) noise_stft_db = _amp_to_db(np.abs(noise_stft)) # dBに変換する mean_freq_noise = np.mean(noise_stft_db, axis=1) std_freq_noise = np.std(noise_stft_db, axis=1) noise_thresh = mean_freq_noise + std_freq_noise * n_std_thresh
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/01 02:09