omnivoice について
omnivoiceは、VoiceStudioのローカルなOpenAI互換APIで音声生成や文字起こしを行うスキルです。クローン音声プロファイルの利用方法を案内し、音声をローカルで処理します。
主な機能
- 01ローカル音声合成
- 02音声の文字起こしと字幕出力
- 03音声プロファイルの検索
- 04OpenAI SDKとHTTPの使用例
活用シーン
- 01選んだ音声でテキストを読み上げる
- 02音声をテキストや字幕に書き起こす
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ debpalash/ voicestudio --skill omnivoiceインストール後、Claude Code で/omnivoiceを入力して読み込まれたか確認します。
詳細
VoiceStudio — ローカル TTS と STT
ユーザーは VoiceStudio を実行しています。これは http://localhost:3900/v1 で OpenAI 互換の音声 API を公開する、完全ローカル動作の音声アプリです。ユーザーが音声の生成、テキストのナレーション、声のクローン作成、音声の文字起こしを依頼したときは、これを使用してください。無料でオフライン動作し、音声が端末の外に出ることもありません。
最初の呼び出しの前に
バックエンドが起動していることを確認します。
curl -sf http://localhost:3900/health
失敗した場合は、VoiceStudio を起動するようユーザーに伝えてください(ソースコードをチェックアウトしている場合は bun run desktop-prod を実行します)。ユーザーに確認せず、クラウド API に切り替えないでください。ローカル優先であることが、ユーザーがこのアプリをインストールした理由です。
テキストから音声への変換
curl -s http://localhost:3900/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "tts-1", "voice": "alloy", "input": "TEXT HERE", "response_format": "wav"}' \
--output speech.wav
model:tts-1またはtts-1-hd。どちらもユーザーが現在使用している TTS エンジンに割り当てられます。voice:OpenAI の音声名(alloy、echo、novaなど)が使えますが、真価を発揮するのは、ユーザー自身がクローンした音声プロフィール ID です。まずプロフィールを確認し(下記参照)、ユーザーが「自分の声」「ナレーターの声」、または名前でプロフィールを指定した場合は、名前付きのクローンを優先してください。response_format:wav、mp3、flac、opus、pcmのいずれかです。- 長いテキストも問題ありません。エンジンが内部で文の区切りに沿って分割します。
ユーザーの音声を確認する
curl -s http://localhost:3900/v1/audio/voices
クローンまたはデザイン済みの音声プロフィール(ID と名前)と、インストール済みのエンジンをすべて一覧表示します。/speech の voice 値には、プロフィールの ID を使います。
音声からテキストへの変換
curl -s http://localhost:3900/v1/audio/transcriptions \
-F [email protected] -F model=whisper-1 -F response_format=json
model:whisper-1は、現在使用している ASR エンジンに割り当てられます(デフォルトは WhisperX。ユーザーは「Model Catalogue → Engines」で選択します)。response_format:json、text、verbose_json(セグメントごとのタイムスタンプ)、srt、vttのいずれかです。ユーザーが字幕を希望する場合は、srtまたはvttをそのまま使用してください。
Python(openai SDK)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:3900/v1", api_key="none") # any string; nothing checks it
audio = client.audio.speech.create(model="tts-1", voice="alloy", input="Hello!", response_format="wav")
text = client.audio.transcriptions.create(model="whisper-1", file=open("clip.wav", "rb")).text
注意事項
- API キーも、レート制限も、料金もありません。ユーザー自身のハードウェアを使用します。コールドスタート後の最初の合成は、モデルの読み込みに時間がかかる場合があります。以降の呼び出しは高速です。
- 音声生成や文字起こし以外の機能(動画の吹き替え、バッチ処理、音声のデザイン、オーディオブック)は、完全版の REST API で利用できます。インタラクティブなリファレンスはアプリ内の Settings → OpenAPI Reference に埋め込まれています。ユーザーに開くよう依頼することもできます。
- エンジンやモデルに関するメッセージとともに呼び出しがエラーになった場合、対処に役立つ詳細情報は通常レスポンス本文にあります。その内容をユーザーにそのまま伝えてください。VoiceStudio のエラーメッセージは、ユーザー自身で解決できるように記述されています(例:切り替える必要がある Settings のトグル)。
コメント
Markdown 対応