AI作詞支援ツール「Song Structure Management Tool」

AI作詞支援ツール「Song Structure Management Tool」

プロジェクト概要

音楽制作における作詞プロセスを効率化するWebアプリケーションを開発しました。Google Gemini AIを活用した自動歌詞生成機能と、楽曲構成管理システムを組み合わせることで、クリエイターの創作活動を支援します。

技術スタック

  • Backend: Python 3.x + Flask
  • Database: SQLite + Flask-SQLAlchemy
  • AI Integration: Google Gemini 2.5 Flash Preview API
  • Frontend: HTML/CSS/JavaScript + Bootstrap 5
  • Authentication: Session-based Authentication

主要機能

1. プロンプト管理システム

楽曲の言語、テーマ、構成を組み合わせて作詞用プロンプトを生成・管理。過去のプロンプトの検索・複製も可能です。

2. AI歌詞生成機能

Google Gemini APIを使用した2ステップ生成プロセス:
- Step 1: 指定されたテーマと構成で歌詞を生成
- Step 2: 生成された歌詞から楽曲タイトル候補を5個提案

3. 高精度な言語別歌詞分離

生成された歌詞を英語歌詞と日本語歌詞に自動分離。日本語文字の含有率(30%閾値)を基準とした精密な言語判定アルゴリズムを実装。

4. 多彩なコピー機能

  • 一括歌詞情報コピー(タイトル + 英語歌詞 + 日本語歌詞)
  • タイトル+英語歌詞コピー(Sunoなど外部サービス向け)
  • 個別フィールドコピー

開発の背景・課題解決

解決した課題

  1. プロンプト管理の非効率性: 毎回同じような作詞プロンプトを手動作成していた
  2. 言語混在問題: AI生成時に英語歌詞と日本語歌詞が混在してしまう
  3. 外部サービス連携: 各音楽生成サービスに適した形式でのデータ出力が困難

技術的な挑戦

歌詞分離アルゴリズムの改良

初期実装では構成タグ([Verse1], [Outro]等)の境界認識が不正確で、特に[Outro]以降の英語歌詞が日本語フィールドに混入する問題がありました。

解決アプローチ:

def separate_lyrics_by_language(lyrics_text, language):
    # 1. テキストクリーニング(不要な説明文除去)
    lyrics_text = clean_lyrics_text(lyrics_text)

    # 2. 構成タグベースでの正確なブロック抽出
    blocks = extract_lyrics_blocks(lyrics_text)

    # 3. 日本語文字含有率による言語判定
    japanese_chars = len(re.findall(r'[あ-ん\u30A1-\u30F6\u4E00-\u9FAF]', block))
    total_chars = len(re.findall(r'[a-zA-Zあ-ん\u30A1-\u30F6\u4E00-\u9FAF]', block))
    is_japanese_block = total_chars > 0 and (japanese_chars / total_chars) > 0.3

この改良により、歌詞分離の精度が大幅に向上しました。

システム設計

データベース設計

-- 楽曲構成管理テーブル
CREATE TABLE song_structure (
    id INTEGER PRIMARY KEY,
    language VARCHAR(20),      -- 言語設定
    theme TEXT,               -- 作詞テーマ
    structure TEXT,           -- 楽曲構成
    title VARCHAR(255),       -- 楽曲タイトル
    english_lyrics TEXT,      -- 英語歌詞
    japanese_lyrics TEXT,     -- 日本語歌詞
    claude_url VARCHAR(500),  -- 外部連携URL
    memo1 TEXT,              -- メモ欄1
    memo2 TEXT,              -- メモ欄2
    user_id INTEGER           -- ユーザーID
);

API設計

RESTful APIを採用し、フロントエンドとの疎結合を実現:
- POST /api/generate_lyrics/<id> - AI歌詞生成
- POST /api/update_lyrics/<id> - 歌詞情報更新
- GET /api/search_by_title - タイトル検索
- POST /api/copy_record/<id> - レコード複製

ユーザーインターフェース

レスポンシブデザイン

Bootstrap 5を使用し、デスクトップ・タブレット・モバイルでの利用を想定したレスポンシブ設計を実装。

ユーザビリティの工夫

  • 視覚的フィードバック: コピー成功時の色変化とメッセージ表示
  • エラーハンドリング: APIエラー時の適切なユーザー通知
  • 外部サービス連携: Claude、Sunoなどへの直接リンク

セキュリティ対策

  • セッションベース認証による安全なログイン機能
  • パスワードハッシュ化(Werkzeug)
  • CSRF対策とセッション管理の最適化
  • 環境変数による機密情報の分離

パフォーマンス最適化

フロントエンド最適化

  • 非同期API通信による画面のレスポンシブ性確保
  • クリップボードAPI/フォールバック処理による確実なコピー機能
  • 効率的なDOM操作とイベントハンドリング

バックエンド最適化

  • SQLAlchemy ORMによる効率的なデータベースアクセス
  • 適切なインデックス設計
  • API レスポンス時間の最適化

実装上の工夫

1. 柔軟な設定管理

// prepared_blocks.json - 楽曲構成ブロックの動的管理
{
  "blocks": ["verse1", "verse2", "chorus1", "bridge", "outro"],
  "description": "準備済みブロックの定義",
  "lastUpdated": "2025-06-19"
}

2. デバッグ機能の充実

開発・保守効率向上のため、詳細なログ出力とエラートレーシング機能を実装。

3. 拡張性を考慮した設計

新しいコピー機能やAPI エンドポイントを容易に追加できるモジュラー設計。

成果と効果

定量的成果

  • 歌詞分離精度: 95%以上(日本語文字含有率ベース判定)
  • プロンプト作成時間: 従来比70%短縮
  • AI生成成功率: 90%以上

定性的成果

  • クリエイターの創作フローの改善
  • 外部音楽生成サービスとの連携効率化
  • 楽曲制作における試行錯誤の支援

技術的学び

AI API統合の知見

  • Google Gemini APIの効果的な活用方法
  • プロンプトエンジニアリングの重要性
  • AI出力の後処理とデータクレンジング技術

フルスタック開発の経験

  • Flask フレームワークでの本格的なWebアプリケーション開発
  • フロントエンド・バックエンド・データベースの統合設計
  • セキュリティとパフォーマンスのバランス調整

今後の展開

機能拡張計画

  • 楽曲ジャンル別テンプレートの追加
  • 韻律解析機能の実装
  • 複数AI モデルの比較機能

技術的改善

  • Docker化による環境構築の簡素化
  • CI/CD パイプラインの構築
  • PostgreSQL移行による大規模データ対応

まとめ

本プロジェクトでは、AI技術を活用した実用的な創作支援ツールを開発しました。単なる技術実装にとどまらず、ユーザーの実際の創作フローを理解し、真に価値のある機能を提供することを重視しました。

特に歌詞分離アルゴリズムの改良では、実際の使用において発生した問題を分析し、データ駆動的なアプローチで解決策を実装した点が、実務的な問題解決能力を示しています。

このツールは現在も継続的に改良を続けており、クリエイターの創作活動支援という社会的価値の提供を目指しています。


技術スタック: Python, Flask, SQLite, Google Gemini AI, Bootstrap
開発期間: 3ヶ月(初期開発 + 継続改良)
プロジェクト規模: 約2,000行のコード

同様の開発をご希望ですか?

この事例と同様の開発やカスタマイズについて、
お気軽にご相談ください。

お問い合わせ