やあ、シミヅです!
最近、僕の会社では24時間ぶっ通しでAIモデルを学習させることが多いんですけど、学習が終わった瞬間に「終わったよーっ!」って音で知らせてくれる機能を作ったら、チームのみんなにめちゃくちゃ喜ばれたんですよ(笑)。
やっぱり、画面をずっと監視しているのは疲れちゃいますからね。
Pythonで「音を鳴らす」っていうのは、ゲーム制作だけじゃなくて、こういった「通知ツール」を作る時にもすごく便利なんですっ!
でも、いざ調べ始めるとライブラリの種類が多すぎて「結局どれがいいのっ!?」って迷っちゃいませんか?
今回は、初心者でも使いやすいものからプロ仕様のものまで、僕が実際に現場で検証したおすすめのライブラリをガッツリ紹介しますね!
執筆者:シミヅ |
|
Windowsなら標準でOK!「winsound」でビープ音を鳴らす
まずは、外部ライブラリをインストールせずに今すぐ試せる方法です!
Windowsを使っているなら、標準ライブラリの winsound が最強なんですよ。
「学習が終わった時のアラート」みたいな、簡単な音だけでいいならこれが一番手軽です!
import winsound
1000Hzの音を500ミリ秒間鳴らす
winsound.Beep(1000, 500)
Windowsのシステム音(アスタリスク)を鳴らす
winsound.PlaySound("SystemAsterisk", winsound.SND_ALIAS)
このコードの意味を解説しますね。
winsound.Beep(周波数, 長さ) は、いわゆる電子音を鳴らす関数です。
数字を変えるだけでドレミの音階を作ることもできちゃうので、ちょっとしたお遊びコードにも使えますよ(笑)。
もう一つの PlaySound は、Windowsが持っているシステム標準の通知音を呼び出すものです。
ファイルを用意しなくていいから、パスの指定ミスで「鳴らないっ!」なんてイライラすることもないのが嬉しいですね!
究極のシンプルさ!「playsound」でサクッと再生
「とにかく、特定のmp3ファイルを1行で鳴らしたいんだっ!」
そんなあなたに僕がおすすめするのは、playsound というライブラリです。
とにかく使い方が直感的で、僕も個人的なツールを作る時はこれ一択ですっ!
from playsound import playsound
mp3ファイルを指定するだけで再生!
playsound('sample_audio.mp3')
print("音が鳴り終わるまで待機してから、ここが実行されるよっ!")
使い方は、インストール(pip install playsound)した後に、関数の引数にファイル名を渡すだけ。
これだけでmp3でもwavでも鳴らしてくれるので、迷いようがないですよね(笑)。
ただ、一つだけ注意点があって、これだと「音が鳴り終わるまで次のコードが実行されない」という仕様なんです。
もし「BGMを流しながら他の処理もさせたい!」という場合は、次に紹介するライブラリの出番ですね!
ゲーム制作や本格利用なら「pygame」が鉄板!
「複数の音を同時に鳴らしたい」
「音量を調節したい」
「繰り返し再生したい」
そんな本格的なニーズに応えてくれるのが、ゲーム開発用ライブラリの pygame ですっ!
AIエンジニアの僕も、デモ用のアプリを作る時なんかにはよくお世話になっているんですよ。
import pygame
import time
初期化
pygame.mixer.init()
音声ファイルの読み込み
pygame.mixer.music.load('bgm.mp3')
再生(引数-1でループ再生になるよっ!)
pygame.mixer.music.play(-1)
print("音楽が流れている間に、別の作業もできるんですっ!")
time.sleep(5) # 5秒間流してみる
停止
pygame.mixer.music.stop()
pygame.mixer.init() でサウンド機能を初期化した後、load() でファイルをメモリに読み込みます。
そして play() を呼ぶと、バックグラウンドで音楽が流れ始めるんです!
playsoundと違って、プログラムが止まらずに次の処理に進めるのが大きな違いですね。
「ループ再生」や「一時停止」も自由自在なので、多機能さを求めるならこれが間違いなくNo.1ですっ!
プロ仕様!「pydub」で音声を加工しながら鳴らす
最後は、音声波形そのものをいじりたい、ちょっとマニアックな人向け(笑)。
pydub を使うと、音量を上げたり、2つの音を合成したりして再生できるんです!
ただし、これを使うには「FFmpeg」という外部ソフトのインストールが必要なので、少し上級者向けかもしれません。
from pydub import AudioSegment
from pydub.playback import play
音声ファイルを読み込む
sound = AudioSegment.from_file("alert.wav", format="wav")
音量を10デシベル上げてみるっ!
louder_sound = sound + 10
再生!
play(louder_sound)
AudioSegment は、音声を「データ」として扱うためのクラスです。
上のコードのように + 10 とするだけで音量が大きくなるなんて、数学的で面白いですよねっ!
AIの学習結果に合わせて、成功したら明るい音、失敗したら低い音に加工して鳴らす……なんてこともできちゃいます。
本格的な音声信号処理をやりたいなら、ぜひ挑戦してほしいライブラリですね!
まとめ!あなたにピッタリな方法はどれ?
Pythonで音を鳴らす方法、自分に合いそうなものは見つかりましたか?
最後に、シミヅ流の選び方をまとめておきますねっ!
- とりあえず音が出ればいい(Windows) ⇒
winsound - 一番楽にmp3を鳴らしたい ⇒
playsound - BGMや効果音を細かく制御したい ⇒
pygame - 音を加工したり編集したりしたい ⇒
pydub
僕はAIの学習完了通知には winsound 、デモで見栄えを良くしたい時は pygame という感じで使い分けていますよ!
プログラミングって、視覚だけじゃなくて「聴覚」を刺激する要素が入ると、一気に楽しくなるんですよ。
皆さんも、ぜひ自分のコードに「声」や「音」を与えてみてくださいねっ!
以上、シミヅでしたっ!またねっ!



コメント