modelslab-audio-generation について
ModelsLab API を使って音声、音楽、効果音を生成・処理するスキルです。音声制作や文字起こしに取り組む開発者向けで、モデル検索や非同期結果の取得例も含みます。
主な機能
- 01テキスト読み上げと音声文字起こし
- 02音声変換と多言語吹き替え
- 03プロンプトによる音楽・効果音生成
- 04楽曲の延長と部分修復
- 05音声モデルの検索と詳細確認
活用シーン
- 01音声コンテンツのナレーション作成
- 02音声の文字起こしや声質の変換
- 03動画やアプリ向けの音楽・効果音制作
- 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_v2 | ElevenLabs Multilingual v2 | テキストから音声へ |
eleven_english_sts_v2 | ElevenLabs Voice Changer | 音声から音声へ |
scribe_v1 | ElevenLabs Scribe | 音声からテキストへ |
eleven_sound_effect | ElevenLabs Sound Effects | 効果音生成 |
music_v1 | ElevenLabs Music | 音楽生成 |
inworld-tts-1 | Inworld 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 | 名前 | スタイル |
|---|---|---|
21m00Tcm4TlvDq8ikWAM | Rachel | ニュートラル、落ち着いた声 |
AZnzlk1XvdvUeBnXmlld | Domi | 自信に満ちた声 |
EXAVITQu4vr4xnSDxMaL | Bella | 柔らかく温かみのある声 |
ErXwobaYiN019PkySvjV | Antoni | バランスの取れた声 |
MF3mGyEYCl7XYWbV9V6O | Elli | 若々しく、明瞭な声 |
TxGEqnHWrfWFTfGW9XjX | Josh | 低く温かみのある声 |
VR6AewLTigWG4xSOukaG | Arnold | 力強い声 |
pNInz6obpgDQGcFmaJgB | Adam | 低く、語りに適した声 |
yoZ06aMxZJJ28mfd3POQ | Sam | ダイナミックな声 |
主なパラメーター
テキストから音声へ
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
prompt | string | はい | 音声に変換するテキスト |
voice_id | string | はい | ElevenLabs 音声識別子 |
model_id | string | はい | TTS モデル(例:eleven_multilingual_v2) |
temperature | float | いいえ | 音声の変化の度合い |
webhook | string | いいえ | 非同期通知 URL |
音声からテキストへ
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
init_audio | string | はい | 文字起こしする音声の URL |
model_id | string | はい | STT モデル(例:scribe_v1) |
音声生成
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
prompt | string | はい | 効果音の説明 |
model_id | string | はい | SFX モデル(例:eleven_sound_effect) |
v6 から v7 へのパラメーター変更
| v6 パラメーター | v7 パラメーター | 備考 |
|---|---|---|
text | prompt | TTS のテキスト入力 |
audio | init_audio | STT/STS の音声入力 |
target_audio | init_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}")
リソース
- 音声 API ドキュメント: https://docs.modelslab.com/voice-cloning/overview
- モデルブラウザー: https://modelslab.com/models
- モデル選択ガイド: https://docs.modelslab.com/guides/model-selection
- API キーの取得: https://modelslab.com/dashboard
関連スキル
modelslab-model-discovery- モデルを検索して絞り込むmodelslab-video-generation- 動画に音声を追加するmodelslab-chat-generation- LLM モデルとチャットするmodelslab-webhooks- 非同期の音声生成を処理する
コメント
Markdown 対応