mcpField
M
modelslab-audio-generation

modelslab-audio-generation

github.com/modelslabクリエイティブ・メディア1370 回インストール36 週間前に更新
リポジトリ

modelslab-audio-generation について

ModelsLab API を使って音声、音楽、効果音を生成・処理するスキルです。音声制作や文字起こしに取り組む開発者向けで、モデル検索や非同期結果の取得例も含みます。

主な機能

  1. 01テキスト読み上げと音声文字起こし
  2. 02音声変換と多言語吹き替え
  3. 03プロンプトによる音楽・効果音生成
  4. 04楽曲の延長と部分修復
  5. 05音声モデルの検索と詳細確認

活用シーン

  1. 01音声コンテンツのナレーション作成
  2. 02音声の文字起こしや声質の変換
  3. 03動画やアプリ向けの音楽・効果音制作
  4. 04音声の他言語への吹き替え

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/modelslab/skills --skill modelslab-audio-generation

インストール後、Claude Code で/modelslab-audio-generationを入力して読み込まれたか確認します。

詳細

ModelsLab 音声生成

AI を使用して、音声、音楽、声の変換、効果音、吹き替えなど、高品質な音声を生成します。

このスキルを使用するタイミング

  • テキストを自然な音声に変換する(TTS)
  • 音声をテキストに書き起こす
  • 声の特徴を変換する(音声から音声への変換)
  • テキストプロンプトから音楽を生成する
  • 効果音を作成する
  • 音声を別の言語に吹き替える
  • 曲を延長またはインペイントする
  • 音声アシスタントやオーディオブックを作成する

利用可能な API(v7)

音声エンドポイント
  • テキストから音声へ:POST https://modelslab.com/api/v7/voice/text-to-speech
  • 音声からテキストへ:POST https://modelslab.com/api/v7/voice/speech-to-text
  • 音声から音声へ:POST https://modelslab.com/api/v7/voice/speech-to-speech
  • 音楽生成:POST https://modelslab.com/api/v7/voice/music-gen
  • 音声生成:POST https://modelslab.com/api/v7/voice/sound-generation
  • 吹き替えの作成:POST https://modelslab.com/api/v7/voice/create-dubbing
  • 曲の延長:POST https://modelslab.com/api/v7/voice/song-extender
  • 曲のインペイント:POST https://modelslab.com/api/v7/voice/song-inpaint
  • 結果の取得:POST https://modelslab.com/api/v7/voice/fetch/{id}

Note:v6 エンドポイント(/api/v6/voice/text_to_speech など)も引き続き使用できますが、現行バージョンは v7 です。v7 ではパラメーター名が変更されています(例:text は prompt に、audio は init_audio になりました)。

音声モデルの確認

# Search audio/voice models
modelslab models search --feature audio_gen

# Search by provider
modelslab models search --search "eleven"

# Get model details
modelslab models detail --id eleven_multilingual_v2

音声モデル ID

model_id名前用途
eleven_multilingual_v2ElevenLabs Multilingual v2テキストから音声へ
eleven_english_sts_v2ElevenLabs Voice Changer音声から音声へ
scribe_v1ElevenLabs Scribe音声からテキストへ
eleven_sound_effectElevenLabs Sound Effects効果音生成
music_v1ElevenLabs Music音楽生成
inworld-tts-1Inworld TTSテキストから音声へ

テキストから音声へ

import requests
import time

def text_to_speech(text, api_key, voice_id="21m00Tcm4TlvDq8ikWAM", model_id="eleven_multilingual_v2"):
    """Convert text to speech.

    Args:
        text: The text to convert to speech
        api_key: Your ModelsLab API key
        voice_id: ElevenLabs voice ID (see Available Voices below)
        model_id: TTS model to use
    """
    response = requests.post(
        "https://modelslab.com/api/v7/voice/text-to-speech",
        json={
            "key": api_key,
            "prompt": text,             # v7 uses "prompt" not "text"
            "voice_id": voice_id,
            "model_id": model_id
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_audio_result(data["id"], api_key)
    else:
        raise Exception(f"Error: {data.get('message', 'Unknown error')}")

# Usage
audio_url = text_to_speech(
    "Hello! Welcome to ModelsLab. This is a test of our text-to-speech API.",
    "your_api_key"
)
print(f"Audio URL: {audio_url}")

音声からテキストへ(文字起こし)

def speech_to_text(audio_url, api_key, model_id="scribe_v1"):
    """Transcribe speech from audio to text.

    Args:
        audio_url: URL of audio file (must be publicly accessible)
        model_id: STT model to use
    """
    response = requests.post(
        "https://modelslab.com/api/v7/voice/speech-to-text",
        json={
            "key": api_key,
            "init_audio": audio_url,    # v7 uses "init_audio" not "audio"
            "model_id": model_id
        }
    )

    data = response.json()

    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_audio_result(data["id"], api_key)
    else:
        raise Exception(data.get("message"))

# Transcribe audio
result = speech_to_text(
    "https://example.com/speech.mp3",
    "your_api_key"
)
print(f"Transcription: {result}")

音声から音声へ(声の変換)

def speech_to_speech(audio_url, voice_id, api_key, model_id="eleven_english_sts_v2"):
    """Convert voice characteristics in audio.

    Args:
        audio_url: URL of the source audio
        voice_id: Target ElevenLabs voice ID
        model_id: Voice conversion model
    """
    response = requests.post(
        "https://modelslab.com/api/v7/voice/speech-to-speech",
        json={
            "key": api_key,
            "init_audio": audio_url,
            "voice_id": voice_id,
            "model_id": model_id
        }
    )

    data = response.json()
    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_audio_result(data["id"], api_key)

効果音の生成

def generate_sound_effect(description, api_key, model_id="eleven_sound_effect"):
    """Generate a sound effect from a text description.

    Args:
        description: What sound to generate
        model_id: Sound effects model
    """
    response = requests.post(
        "https://modelslab.com/api/v7/voice/sound-generation",
        json={
            "key": api_key,
            "prompt": description,
            "model_id": model_id
        }
    )

    data = response.json()
    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_audio_result(data["id"], api_key)

# Generate door slam sound
sfx_url = generate_sound_effect(
    "Heavy wooden door slamming shut",
    "your_api_key"
)

音楽生成

def generate_music(prompt, api_key, model_id="music_v1"):
    """Generate music from a text description.

    Args:
        prompt: Description of music style/mood
        model_id: Music generation model
    """
    response = requests.post(
        "https://modelslab.com/api/v7/voice/music-gen",
        json={
            "key": api_key,
            "prompt": prompt,
            "model_id": model_id
        }
    )

    data = response.json()
    if data["status"] == "success":
        return data["output"][0]
    elif data["status"] == "processing":
        return poll_audio_result(data["id"], api_key)

# Generate background music
music_url = generate_music(
    "Upbeat electronic music with a driving beat, perfect for a tech startup video",
    "your_api_key"
)
print(f"Music: {music_url}")

非同期結果のポーリング

def poll_audio_result(request_id, api_key, timeout=300):
    """Poll for async audio generation results."""
    start_time = time.time()

    while time.time() - start_time < timeout:
        fetch = requests.post(
            f"https://modelslab.com/api/v7/voice/fetch/{request_id}",
            json={"key": api_key}
        )
        result = fetch.json()

        if result["status"] == "success":
            return result["output"][0]
        elif result["status"] == "failed":
            raise Exception(result.get("message", "Generation failed"))

        time.sleep(5)

    raise Exception("Timeout waiting for audio generation")

利用可能な ElevenLabs 音声 ID

音声 ID名前スタイル
21m00Tcm4TlvDq8ikWAMRachelニュートラル、落ち着いた声
AZnzlk1XvdvUeBnXmlldDomi自信に満ちた声
EXAVITQu4vr4xnSDxMaLBella柔らかく温かみのある声
ErXwobaYiN019PkySvjVAntoniバランスの取れた声
MF3mGyEYCl7XYWbV9V6OElli若々しく、明瞭な声
TxGEqnHWrfWFTfGW9XjXJosh低く温かみのある声
VR6AewLTigWG4xSOukaGArnold力強い声
pNInz6obpgDQGcFmaJgBAdam低く、語りに適した声
yoZ06aMxZJJ28mfd3POQSamダイナミックな声

主なパラメーター

テキストから音声へ
パラメーター型必須説明
promptstringはい音声に変換するテキスト
voice_idstringはいElevenLabs 音声識別子
model_idstringはいTTS モデル(例:eleven_multilingual_v2)
temperaturefloatいいえ音声の変化の度合い
webhookstringいいえ非同期通知 URL
音声からテキストへ
パラメーター型必須説明
init_audiostringはい文字起こしする音声の URL
model_idstringはいSTT モデル(例:scribe_v1)
音声生成
パラメーター型必須説明
promptstringはい効果音の説明
model_idstringはいSFX モデル(例:eleven_sound_effect)

v6 から v7 へのパラメーター変更

v6 パラメーターv7 パラメーター備考
textpromptTTS のテキスト入力
audioinit_audioSTT/STS の音声入力
target_audioinit_audio音声から音声への変換元
(必須ではない)model_idすべてのエンドポイントで必須になりました

ベストプラクティス

1. 正しい音声 ID を使用する

TTS には、有効な ElevenLabs の音声 ID が必要です(「alloy」のような一般的な名前は使用できません)。

2. 音声のアクセシビリティを確保する

音声からテキストへの変換に使用する音声 URL は、リダイレクトや認証なしで公開アクセスできる必要があります。

3. 時間のかかる処理には Webhook を使用する
payload = {
    "key": api_key,
    "prompt": "...",
    "model_id": "eleven_multilingual_v2",
    "webhook": "https://yourserver.com/webhook/audio",
    "track_id": "audio_001"
}

エラー処理

try:
    audio = text_to_speech(text, api_key)
    print(f"Audio generated: {audio}")
except Exception as e:
    print(f"Audio generation failed: {e}")

リソース

関連スキル

  • modelslab-model-discovery - モデルを検索して絞り込む
  • modelslab-video-generation - 動画に音声を追加する
  • modelslab-chat-generation - LLM モデルとチャットする
  • modelslab-webhooks - 非同期の音声生成を処理する

コメント