3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「完全無料」文字起こしサービスを作ろうとして学んだこと

3
Last updated at Posted at 2025-07-10

はじめに

転職活動中のPython/Django初学者である私が、ポートフォリオとして
「Django + OpenAI Whisperによる完全無料文字起こしWebサービス」
の開発に挑戦した記録です。

結果的に「完全無料公開」は技術的・経済的制約により断念しましたが、
個人開発におけるサービス運用の現実を学ぶ貴重な体験となりました。

OpenAI Whisper とは

  • OpenAIがOSSで公開した多言語対応の音声認識モデル
  • tiny~largeの5サイズ(大きいほど精度↑・メモリ消費↑)
  • 最小のtinyでも推論時に約1GB のメモリが必要
  • CPUでも動作するがGPUと比べて十数~数十倍低速
  • 日本語も高精度で認識

1. 「完全無料」にこだわった理由

開発目標

誰でも一瞬で試せるデモサービスの提供

  • URL を開くだけ、会員登録・クレカ登録不要
  • ポートフォリオとして技術力をアピール

想定するユーザー価値

  • Whisperの高精度を気軽に体験: GPU使用時は日本語でもほぼリアルタイム処理
  • 利用ハードルゼロ: 料金発生なし → 気軽に試用可能

開発者の制約

  • 個人予算の限界: 転職活動中のため固定費を最小限に抑制
  • 競合調査結果: 市販SaaSは月額¥1,000〜、OSSデモは従量課金のみ
    → 「完全無料」の先行事例なし

2. 技術スタックと環境

項目 技術・バージョン 選定理由
Backend Python 3.11 + Django 5.2 REST API開発の効率性
AI Engine openai-whisper 20240625 高精度・多言語対応
Deep Learning PyTorch 2.2 Whisperの実行環境
音声処理 ffmpeg 6.x 各種音声フォーマット対応
デプロイ候補 Heroku/Render/Fly.io/PythonAnywhere 無料枠での運用検討

3. アーキテクチャ全体像(フロー図)

パフォーマンス制約

コンポーネント リソース消費 処理時間(目安)
Whisper tiny メモリ 1GB 音声1分→処理10分(CPU)
ファイルアップロード 一時ストレージ ~100MB程度
REST API CPU・メモリ軽微 数ms(モデル読み込み除く)

4. 主要コンポーネント & 動作デモ

4-1. 主要コンポーネント

レイヤ ファイル 役割
Front index.html, main.js ファイル選択・送信、結果描画
API transcription/views.py 受信 → Whisper 呼び出し → JSON 返却
Model Whisper tiny 文字起こしエンジン
Storage /tmp(一時ディレクトリ) 受信ファイル保存 → 削除

4-2. 動作デモ

DEMO_light-online-video-cutter.com.gif


このデモは CPU + Whisper tiny で動かしているため、

  • 処理速度 : 音声 1 分あたり数分〜10 分かかる場合があります。
  • 認識精度 : 上位モデルに比べると誤変換が増えます。
    高速・高精度で試したい場合は、GPU 環境や base 以上のモデルでの実行をおすすめします。

5. 「完全無料運用」が困難だった技術的理由

メモリ制約

  • 要求: Whisper tinyでも約1GB
  • 無料枠: 各社256~512MB
  • 結果: モデル読み込み段階でOOM(Out of Memory)

処理速度問題

  • CPU環境: 音声1分あたり処理時間10分
  • ユーザー体験: 実用は難しい待機時間
  • 必要性: GPU環境が事実上必須

サーバーレス制限

  • AWS Lambda/Cloud Functions: 実行時間15分上限
  • コールドスタート: 初回起動に10秒以上
  • 長尺音声: タイムアウトにより処理不可

無料枠超過リスク

: Lambda無料枠(月125万秒)の場合

  • 5分音声×20本で上限に到達
  • バズった瞬間に課金発生
  • 「完全無料」の前提と矛盾

6. 代替策の経済性検証

コスト試算(2024年7月時点、USD=150円)

方式 月額コスト 広告収益との差額 採用可否
tiny+CPU(無料サーバー) ¥0 ❌ メモリ不足で起動不可
Whisper API(従量課金) ¥2,700*¹ ±¥0 △ 利用増=課金増で黒字化困難
共有GPU(RunPod Spot) ¥4,000*² −¥1,300 ❌ 恒常的赤字
専有GPU(AWS g5) ¥43,000 −¥40,300 ❌ 個人開発では非現実的

*¹ 月300分利用時(¥0.9/分)
*² 50%稼働率での見積もり

広告収益シミュレーション

前提: 日300PV × RPM¥300 = 月¥2,700(技術系ブログ平均値)

シナリオ PV/日 RPM 月収益 共有GPU運用との差額
悲観的 200 ¥225 ¥1,350 −¥2,650
標準的 300 ¥300 ¥2,700 −¥1,300
楽観的 600 ¥450 ¥8,100 +¥4,100

7. プロジェクトを通じて得た学び

技術的学習

  • Django + REST API設計: フロントエンド分離による拡張性
  • AI モデル統合: Whisperの実装とパフォーマンス最適化
  • インフラ制約理解: 無料サービスの現実的な限界

📊 事業的視点

  • コスト構造分析: 技術選定が運用コストに与える直接的影響
  • 収益モデル検証: 広告収益だけでは継続運用困難
  • ユーザー価値と経済性: 理想と現実のギャップ

ポートフォリオとしての価値

  • 問題解決能力: 技術的制約を論理的に分析・整理
  • 現実的判断力: 継続可能性を考慮した意思決定
  • 学習姿勢: 失敗から具体的な知見を抽出

今後の展望

このプロジェクトの経験を踏まえ、次のようなアプローチを検討中です:

  • フリーミアムモデル: 制限付き無料版 + 有料版の組み合わせ
  • API連携: OpenAI Whisper APIを使用した従量課金モデル

結論

「完全無料での文字起こしサービス」という当初目標は達成できませんでしたが、
個人開発における技術選定・コスト設計・サービス運用の現実
体系的に学ぶことができました。

今後は、この知見を活かして
技術的制約と経済性を両立できるサービス設計に挑戦していきます。

GitHub リポジトリ

https://github.com/haruki0619/whisper-web-app

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?