ElevenLabsのskillを試してみた

ElevenLabsのskillを試してみた

2026.04.29

どうも!オペ部の西村祐二です!

今回は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拡張をインストールしている場合は、こちらのコマンドでも同じスキル群を導入できます。

https://dev.classmethod.jp/articles/gh-skill-agent-skills-management/

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 モデルで読み上げてみます。

tts.py
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秒間生成してみます。

sfx.py
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トラックを生成してみました。

music.py
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を使うと、スタイルやセクション構成を細かく制御できます。

music_composition_plan.py
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 を入力にして、スクリプトで文字起こしを行いました。

stt.py
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がコードを組み立ててくれる点が、便利に感じたところでした。音声・音楽・文字起こしをコードに組み込みたい場面では、まず試してみる価値がありそうです。

誰かの参考になれば幸いです。


参考リンク:

この記事をシェアする

関連記事