
ElevenLabsのskillを試してみた
どうも!オペ部の西村祐二です!
今回はElevenLabsが公開しているskillsを試してみました。npx skills addコマンドなどで導入でき、Claude CodeやCursorなどから音声生成・音楽生成・文字起こしといったElevenLabs APIを呼び出せるようになります。
やったこと
ElevenLabs skillsをClaude Codeに導入し、公開されている7スキルのうち以下の4つを実際に試しました。
- text-to-speech
- sound-effects
- music
- speech-to-text
環境:
- ツール: Claude Code + ElevenLabs skills
- SDK:
elevenlabs(Python)/@elevenlabs/elevenlabs-js(JavaScript)
ElevenLabs skillsとは
ElevenLabs skillsは、ElevenLabsのAPI機能をAIコーディングアシスタントから利用するためのAgent Skills仕様準拠のスキルセットです。Agent SkillsはMarkdownファイル(SKILL.md)で定義された指示書のようなもので、AIエージェントが特定のタスクを実行する手順やリファレンスコードをまとめています。
利用可能なスキルは以下の7つです。
| スキル | 機能 |
|---|---|
| text-to-speech | テキストをAI音声に変換(70以上の言語対応) |
| speech-to-text | 音声ファイルをテキストに書き起こし(90以上の言語対応) |
| sound-effects | テキストの説明から効果音を生成 |
| music | テキストプロンプトから音楽を生成 |
| agents | 会話型音声AIエージェントの構築 |
| voice-isolator | 背景ノイズを除去して声だけを抽出 |
| setup-api-key | APIキーの取得・設定ガイド |
skillが入っていると何が変わるのか
skillが提供するのはAPIではなく「Claude Code向けの指示書(SKILL.md)」です。インストールしておくと、Claude Codeが起動時にskillのdescriptionを読み込み、ユーザーから「日本語のテキストを音声にして」のような依頼が来たときに、descriptionとマッチするskillを自動的に選んで、SKILL.md本文をその場で参照しながらコードを組み立ててくれます。
具体的には次のような効果がありました。
- APIドキュメントを毎回検索しに行かなくて済む: SKILL.mdに
voice_idのサンプル値、model_idの選択肢、text_to_speech.convert()の呼び出し方が含まれているので、Claude Codeはそれを参照してスクリプトを書ける - ハマりどころを回避できる: たとえばJavaScript側で古い
elevenlabsパッケージ(v1.x)ではなく@elevenlabs/elevenlabs-jsを使う必要がある、といった注意書きがSKILL.md冒頭に書かれているので、誤ったパッケージで実装される可能性が下がる - コードを実行するのはskillではなく、あくまでClaude Code側: skill自体は「どう書くか」を教えてくれる存在で、実際のスクリプト生成・実行はClaude Codeが担う
今回も、SKILL.mdに書かれている voice_id="JBFqnCBsd6RMkjVDRZzb" (Georgeボイス)や model_id="eleven_multilingual_v2" をそのまま使ってサンプルスクリプトを書いてもらえました。
セットアップ
1. ElevenLabs APIキーの取得
ElevenLabsダッシュボードからAPIキーを取得し、環境変数 ELEVENLABS_API_KEY に設定します。
export ELEVENLABS_API_KEY="your-api-key"
2. skillsの導入
以下のコマンドで、ElevenLabsの全スキルをプロジェクトに追加できます。
npx skills add elevenlabs/skills
実行するとスキルファイルがインストールされ、Claude Codeから各スキルを呼び出せる状態になります。
gh skill install でも導入できる
GitHub CLIのgh skill拡張をインストールしている場合は、こちらのコマンドでも同じスキル群を導入できます。
gh skill install elevenlabs/skills
実行すると、対象スキルとインストール先のエージェント、インストールスコープ(プロジェクト/ユーザー)を対話的に選択できます。
今回、すべてのSkillをインストールしました。
? Select skill(s) to install: (all skills)
? Select target agent(s): GitHub Copilot, Claude Code, Codex
? Installation scope: Project: xxxxxxxxxxxxxx (recommended)
Installing to .agents/skills for GitHub Copilot, Codex...
✓ Installed agents (from elevenlabs/skills@main) in .agents/skills
✓ Installed music (from elevenlabs/skills@main) in .agents/skills
✓ Installed setup-api-key (from elevenlabs/skills@main) in .agents/skills
✓ Installed sound-effects (from elevenlabs/skills@main) in .agents/skills
✓ Installed speech-to-text (from elevenlabs/skills@main) in .agents/skills
✓ Installed text-to-speech (from elevenlabs/skills@main) in .agents/skills
✓ Installed voice-isolator (from elevenlabs/skills@main) in .agents/skills
Installing to .claude/skills for Claude Code...
✓ Installed agents (from elevenlabs/skills@main) in .claude/skills
(以下略)
Claude Code向けには.claude/skills/配下に、Copilot/Codex向けには.agents/skills/配下にスキルファイルが配置されました。インストール後に表示されるgh skill previewコマンドでスキルの内容を事前にレビューできるので、未検証のスキルを取り込むときに便利です。
3. SDKのインストール
Pythonの場合(今回はuvを使いました)。
uv add elevenlabs
JavaScript/TypeScriptの場合。
npm install @elevenlabs/elevenlabs-js
今回試した時点でインストールされたPython SDKは elevenlabs 2.45.0 でした。
試してみる
text-to-speech
テキストからAI音声を生成するスキルです。70以上の言語に対応しており、用途に応じて複数のモデルが用意されています。
公式ドキュメント: Text to Speech | ElevenLabs Docs
| Model ID | 言語数 | レイテンシ | 用途 |
|---|---|---|---|
eleven_v3 |
70+ | Standard | 最高品質、感情表現 |
eleven_multilingual_v2 |
29 | Standard | 高品質、長文向け |
eleven_flash_v2_5 |
32 | ~75ms | 超低レイテンシ、リアルタイム |
日本語のテキストを eleven_multilingual_v2 モデルで読み上げてみます。
from elevenlabs import ElevenLabs
client = ElevenLabs()
audio = client.text_to_speech.convert(
text="こんにちは、ElevenLabsのテストです。今日はskillを試してみました。",
voice_id="JBFqnCBsd6RMkjVDRZzb", # George
model_id="eleven_multilingual_v2",
)
with open("tts_output.mp3", "wb") as f:
for chunk in audio:
f.write(chunk)
uv run python tts.py で実行すると、tts_output.mp3(約74KB、MP3 128kbps / 44.1kHz / モノラル)が生成されました。voice_idでボイスを選択する形式で、プリセットに加えてダッシュボードで作成したカスタムボイスも指定できます。
生成された音声はこちらから聞けます。「試して」が「示して」と読まれてました。
sound-effects
テキストの説明から効果音を生成するスキルです。ループ対応やデュレーション指定も可能です。
公式ドキュメント: Sound Effects | ElevenLabs Docs
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
text |
string(必須) | — | 効果音の説明 |
duration_seconds |
number | null(自動) | 0.5〜30秒 |
prompt_influence |
number | 0.3 | プロンプトへの忠実度(0〜1) |
loop |
boolean | false | シームレスループの生成 |
「ブリキ屋根に降る豪雨と遠くの雷鳴」を5秒間生成してみます。
from elevenlabs import ElevenLabs
client = ElevenLabs()
audio = client.text_to_sound_effects.convert(
text="Heavy rain on a tin roof with distant thunder",
duration_seconds=5.0,
prompt_influence=0.5,
)
with open("sfx_output.mp3", "wb") as f:
for chunk in audio:
f.write(chunk)
実行すると sfx_output.mp3(約81KB、MP3 128kbps / 44.1kHz / ステレオ)が生成されました。プロンプトは具体的に書くほど結果が安定する傾向がありました。「Rain」より「Heavy rain on a tin roof」のように書くと、イメージに近い音が生成されやすかったです。
生成された音声はこちらから聞けます。
music
テキストプロンプトから音楽トラックを生成するスキルです。インストゥルメンタルだけでなく、歌詞付きの楽曲も生成できます。
公式ドキュメント: Music | ElevenLabs Docs
15秒のlo-fi hip hopトラックを生成してみました。
from elevenlabs import ElevenLabs
client = ElevenLabs()
audio = client.music.compose(
prompt="A chill lo-fi hip hop beat with jazzy piano chords",
music_length_ms=15000,
)
with open("music_output.mp3", "wb") as f:
for chunk in audio:
f.write(chunk)
実行すると music_output.mp3(約241KB、MP3 128kbps / 44.1kHz / Joint Stereo)が生成されました。15秒の生成でレスポンスが返ってくるまで体感で1分弱かかったので、長尺の生成では待ち時間に注意が必要そうです。
music_length_msでミリ秒単位の長さを指定します。また、composition_planを使うと、スタイルやセクション構成を細かく制御できます。
from elevenlabs import ElevenLabs
client = ElevenLabs()
plan = client.music.composition_plan.create(
prompt="An epic orchestral piece building to a climax",
music_length_ms=60000
)
# スタイルやセクションを確認・修正できる
print(plan.positiveGlobalStyles)
audio = client.music.compose(
composition_plan=plan
)
生成された音楽はこちらから聞けます。
speech-to-text
音声ファイルをテキストに書き起こすスキルです。90以上の言語に対応し、話者分離やワードレベルのタイムスタンプにも対応しています。
公式ドキュメント: Speech to Text | ElevenLabs Docs
| Model ID | 説明 | 用途 |
|---|---|---|
scribe_v2 |
高精度、90以上の言語 | バッチ処理、字幕、長時間音声 |
scribe_v2_realtime |
低レイテンシ(~150ms) | リアルタイム文字起こし |
先ほどtext-to-speechで生成した tts_output.mp3 を入力にして、スクリプトで文字起こしを行いました。
from elevenlabs import ElevenLabs
client = ElevenLabs()
with open("tts_output.mp3", "rb") as audio_file:
result = client.speech_to_text.convert(
file=audio_file,
model_id="scribe_v2",
)
print(result.text)
print(getattr(result, "language_code", None))
実行結果は次の通りでした。
こんにちは。ElevenLabsのテストです。今日はスキルを示してみました。
jpn
書き起こしは「スキルを示してみました」になりました。これはspeech-to-text側の誤認識ではなく、前段のtext-to-speech時点で「試して(ためして)」が「示して(しめして)」と読み上げられていたことが原因です。speech-to-textはその音声を忠実に書き起こしたかたちです。
なお言語コード(jpn)の自動判定はこの短い入力でも正しく行われていました。
入力に使った音声は前述のtext-to-speechセクションのリンクから確認できます。
対応フォーマットも広く、MP3・WAV・M4A・FLAC・OGGなどの音声ファイルに加え、MP4やMOVといった動画ファイルからも文字起こしできます。ファイルサイズは最大3GB、最大10時間まで対応しています。
試してみてわかったこと
Claude Codeのターミナルから自然言語で音声生成や文字起こしを依頼できるのは、ワークフローとしてスムーズでした。「このテキストを日本語で読み上げて」と指示するだけで、スキル経由でAPIが呼ばれてファイルが生成されます。
各スキルを触ってみての気づきは次の通りです。
- text-to-speech: 日本語のテキストでも全体としては自然な読み上げになったが、
eleven_multilingual_v2だと「試して」が「示して」と読まれてしまった。eleven_v3に切り替えると同じテキストでも正しく読み上げてくれた - sound-effects: プロンプトの具体性で結果の安定度が変わった
- music: 15秒程度でも生成に時間がかかり、長尺は待ち時間が気になりそう
- speech-to-text: TTSで生成した音声をそのまま入力したところ、聴こえた通りに忠実に書き起こされた(合成側の読み間違いもそのまま再現された)
ElevenLabs APIは従量課金なので、用途に応じて料金ページを確認しておくと良さそうです。text-to-speechは文字数課金、musicやsound-effectsは生成回数ごとの課金になっていました。
まとめ
ElevenLabs skillsは、Agent Skills仕様のスキルとしてClaude Codeに導入できます。ElevenLabs APIのドキュメントを毎回確認しなくても、スキル側の指示書に沿ってClaude Codeがコードを組み立ててくれる点が、便利に感じたところでした。音声・音楽・文字起こしをコードに組み込みたい場面では、まず試してみる価値がありそうです。
誰かの参考になれば幸いです。
参考リンク:









