書籍「いきなりプログラミングPython」をご購入いただきありがとうございます。このページは本書で使われるサンプル画像や、無料で使える動画素材、補足コードやエラー対応について紹介しています。
こんにちは。wat(@watlablog)です。書籍で扱いきれなかった要素をここで紹介します!
サンプル画像
本書の第5章と第6章は画像処理関連のコードを紹介しています。お手軽に画像処理を試せるように、書籍で使用していた画像(+α)を公開します。是非ダウンロードして遊んでみてください。
ダウンロード |
ダウンロード |
ダウンロード |
ダウンロード |
ダウンロード |
ダウンロード |
ダウンロード |
サンプル動画
本書第6章で笑顔の検出を行っている動画素材は商用利用可能なvideoAC(https://video-ac.com/)様のダウンロード素材です。書籍と同じ動画で確認をしたい場合は、「https://video-ac.com/video/17803」をダウンロードして頂き、翔泳社ダウンロードサイトより入手できる動画に対する笑顔キャプチャー「smile_capture_video.ipynb」のコードで遊んでみてください。
補足コード
書籍第3章P102には2つの音声「recorded.wav」と「pitch-shifted.wav」を周波数波形で比較する内容を紹介しています。ここではそのコードを紹介します。
このプログラムではSciPyという外部ライブラリを使います。SciPyを使用するには、
pip install scipyをコマンドラインやターミナルで実行してください。
プログラム実行フォルダにrecorded.wavとpitch-shifted.wavを置き、次のプログラムを実行してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import numpy as np from matplotlib import pyplot as plt import soundfile as sf from scipy import fftpack import librosa def calc_fft(data, samplerate): """高速フーリエ変換(周波数分析)する関数""" spectrum = fftpack.fft(data) amp = np.sqrt((spectrum.real ** 2) + (spectrum.imag ** 2)) amp = amp / (len(data) / 2) phase = np.arctan2(spectrum.imag, spectrum.real) phase = np.degrees(phase) freq = np.linspace(0, samplerate, len(data)) return amp, freq def graph_plot(x, y): """波形をグラフにする関数""" fig, ax = plt.subplots() ax.set_xlabel('Frequency [Hz]') ax.set_ylabel('Amplitude') ax.set_yscale('log') ax.set_xlim([0, 500]) labels=['recorded.wav', 'pitch-shifted.wav'] for x_axis, y_axis, label in zip(x, y, labels): ax.plot(x_axis, y_axis, label=label) ax.legend() plt.show() plt.close() # recorded.wavの読み込み original_waveform, original_sampling_rate = sf.read('recorded.wav') # ボイスチェンジ後のwavの読み込み shifted_waveform, shifted_sampling_rate = sf.read('pitch_shifted.wav') # FFT(高速フーリエ変換)を計算 original_amp, original_freq = calc_fft(original_waveform, original_sampling_rate) shifted_amp, shifted_freq = calc_fft(shifted_waveform, shifted_sampling_rate) # グラフに描画 graph_plot([original_freq, shifted_freq], [original_amp, shifted_amp]) |
ボイスチェンジ前後で周波数の異なる波形が比較できていたら成功です。
本コードにはフーリエ変換という計算が使われています。より詳しい説明を知りたい方は、是非WATLABブログの以下の記事を読んでみてください。
・PythonでFFT実装!SciPyのフーリエ変換まとめ
エラー対応
まだエラーは打ちあがっていません。