Lesson_Python応用
応用① ボイスチェンジャーの開発
【仕様】音を録音したものを声色を変えて出力できる
①パソコンにある入力装置や出力装置からマイクとスピーカーを使う
※使うには、デバイスを検索して使える状態にする必要がある
②元の音と変更後の音の違いをグラフ化して目でも見えるようにする
[1]開発環境を準備する
①開発用のフォルダ「voice」を作成する(作成場所は自分のアカウントの直下)
②コマンドプロンプトを起動する
③ cd voice で作成したvoiceフォルダに入る
④ py -m venv .venv で仮想環境を作成する
⑤ .venv\Scripts\activate.bat で仮想環境を有効化する
※deactivat で終了
※作ったプログラムは開発用フォルダに保存する(今回ならvoiceフォルダ)
venvフォルダにはpythonの実行ファイルやインストールしたライブラリが入ります
スキル:異なるバージョンのPythonの仮想環境を作るには?
①使用したいバージョンのPythonをダウンロードしてインストールする
②仮想環境を作りたいフォルダに移動する
③ py -3.12 -m venv .venv で仮想環境を作成する
④ .venv\Scripts\activate.bat で仮想環境を有効化する
※py -0 でインストールされているpythonのバージョン一覧が確認できる
[2]パソコンの音声デバイスを探してみよう
Pythonでマイクやスピーガ―等の音声デバイスを制御する「pyaudio」ライブラリをインストールする
>pip install pyaudio
import pyaudio as pa
audio = pa.PyAudio()
for i in range(audio.get_device_count()):
device_info = audio.get_device_info_by_index(i)
print(device_info)
audio.terminate()□PyAudio() … Pythonでマイクやスピーカーを操作するライブラリ
□辞書型 … {キー1:値1,キー2:値2,…}
print(hana['キー1']) にすると値1が取得できる
□audio = pa.PyAudio() … インスタンス
□audio.terminate() … 音声デバイス利用の終了
[3]探したデバイスからマイクを抽出しよう(L1.pyを変更します)
Q どうやってマイクを識別する?
A maxInputChannels(最大入力チャンネル数)が0より大きいものがマイク
知識)音がパソコンに通る道のことを「チャンネル」といいます。
チャンネル数が1を「モノラル」と言います。
チャンネル数が2を「ステレオ」といい、左右別々の音をパソコンに送ることができます
import pyaudio as pa
audio = pa.PyAudio()
mlist = []
for i in range(audio.get_device_count()):
device_info = audio.get_device_info_by_index(i)
mic_ch = device_info['maxInputChannels']
if mic_ch > 0:
mlist.append(device_info['index'])
print(mlist)
audio.terminate()[4]抽出したマイクを使って、声を録音しよう
Q 音はコンピュータでどうやって扱われるの?
A 音は波形で繋がっています。一方コンピュータは各状態を0と1で表すデジタルの世界です。なので、波形の各
状態ごとにとらえていくことになります。
・その波形の状態を1秒間にどれくらい捉えるか?これを「サンプリングレート」と言います。
・一度にどれだけのデータ量を取得するか?これを「フレームサイズ」と言います