WAV ⇄ MP3 変換アプリ
概要
WAVファイルを投げるとMP3が、MP3を投げるとWAVが返ってきます。タブで方向を切り替えます。元のファイル名は保持されます(example.wav → example.mp3)。pydub経由でFFmpegを呼ぶ薄い構造をGradioでラップして、Hugging Face Spacesに公開しました。実装はapp.py約60行に収まっています。
用途
WAVとMP3を相互に変換するための、ブラウザ完結のツールです。
使用技術
- — Python 3.10
- — Gradio(Web UI)
- — pydub(FFmpegを薄くラップする変換API)
- — FFmpeg(実エンコード/デコード本体)
- — Hugging Face Spaces(デプロイ先)
工夫点
技術面
固定の出力ファイル名にすると複数ユーザーの同時変換で上書きが起きるため、リクエストごとに tempfile.mkdtemp で独立した出力ディレクトリを切る方式にしました。拡張子チェックは gr.File(file_types=[".wav"]) でクライアント側に寄せて、サーバー側コードはハッピーパスだけに絞っています。例外時に文字列を return すると gr.File 出力の型違反でUIがクラッシュするので、raise gr.Error("...") で赤バナーに変換しています。requirements.txt は == でバージョンを固定して、HF Space の sdk_version とも揃えました。緩い制約だと Gradio 5.x への自動アップグレードで API 破壊(allow_flagging → flagging_mode など)が起きるので、ホストのランタイムと実インストール版の乖離を防いでいます。
使いやすさ
共有環境で誰かと同時に変換が走る前提があるので、固定ファイル名による上書き事故が起きないようリクエストを独立させました。元のファイル名を保持するので、ダウンロードしたあとに何のファイルだったか分からなくなりません。不正な拡張子や破損ファイルは赤バナーで日本語メッセージを出すので、UIが無言で固まることを避けています。