asr について
`coli asr` で音声ファイルをオフライン文字起こしするスキルです。多言語対応または英語専用のモデルを選べ、必要に応じて AI で文字起こしを整えられます。
主な機能
- 01ローカルモデルによるオフライン文字起こし
- 02複数言語の音声認識
- 03AI による任意のテキスト整形
- 04言語と音声メタデータの出力
活用シーン
- 01会議録音の文字起こし
- 02インタビュー音声のテキスト化
- 03文字起こし結果の Markdown 出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ marswaveai/ skills --skill asrインストール後、Claude Code で/asrを入力して読み込まれたか確認します。
詳細
使用する場合
- ユーザーが音声ファイルをテキストに書き起こしたい場合
- ユーザーが音声ファイルのパスを指定して、書き起こしを依頼した場合
- ユーザーが「转录」、「识别」、「transcribe」、「语音转文字」と言った場合
使用しない場合
- ユーザーがテキストから音声を合成したい場合(
/ttsを使用) - ユーザーがポッドキャストや解説動画を作成したい場合(
/podcastまたは/explainerを使用)
目的
ローカルの音声認識モデルを使って完全にオフラインで動作する coli asr により、音声ファイルをテキストに書き起こします。API キーは不要です。中国語、英語、日本語、韓国語、広東語(sensevoice モデル)、または英語のみ(whisper モデル)に対応しています。
現在の CLI オプションとサポート対象のフラグは、coli asr --help を実行して確認してください。
絶対的な制約
- シェルスクリプトは使用しないでください。直接コマンドのみを使用してください。
- やり取りを始める前に、必ず
shared/config-pattern.mdに従って設定を読み込んでください。 - やり取りのパターンは
shared/cli-patterns.mdに従ってください。 - 一度に複数の質問をしないでください。
やり取りの流れ
ステップ 0:前提条件の確認
設定を行う前に、環境を確認してください(ユーザーには通知しません)。
COLI_OK=$(which coli 2>/dev/null && echo yes || echo no)
FFMPEG_OK=$(which ffmpeg 2>/dev/null && echo yes || echo no)
MODELS_DIR="$HOME/.coli/models"
MODELS_OK=$([ -d "$MODELS_DIR" ] && ls "$MODELS_DIR" | grep -q sherpa && echo yes || echo no)
| 問題 | 対応 |
|---|---|
coli が見つからない | 中断します。まず npm install -g @marswave/coli を実行するようユーザーに伝えてください |
ffmpeg が見つからない | 警告します(WAV ファイルは引き続き動作します)。brew install ffmpeg / sudo apt install ffmpeg を提案してください |
| モデルがダウンロードされていない | 初回の書き起こし時に、モデル(約60MB)が ~/.coli/models/ に自動ダウンロードされることをユーザーに伝えてください |
coli が見つからない場合は、ここで中断して先に進まないでください。
ステップ 0:設定
shared/config-pattern.md のステップ 0(質問なしで起動)に従ってください。
ファイルが存在しない場合 — デフォルト設定で黙って作成し、そのまま進みます:
mkdir -p ".listenhub/asr"
echo '{"model":"sensevoice","polish":true}' > ".listenhub/asr/config.json"
CONFIG_PATH=".listenhub/asr/config.json"
CONFIG=$(cat "$CONFIG_PATH")
設定に関する質問はしないでください。 適切なデフォルト(sensevoice モデル、磨き上げを有効)を使って、やり取りの流れに直接進んでください。
ファイルが存在する場合 — 設定を黙って読み込み、そのまま進みます:
CONFIG_PATH=".listenhub/asr/config.json"
[ ! -f "$CONFIG_PATH" ] && CONFIG_PATH="$HOME/.listenhub/asr/config.json"
CONFIG=$(cat "$CONFIG_PATH")
設定フロー(ユーザーから再設定を依頼された場合のみ)
ユーザーが明示的に再設定を依頼した場合にのみ実行してください。現在の設定を表示します:
当前配置 (asr):
模型:sensevoice / whisper-tiny.en
润色:开启 / 关闭
次の順に尋ねます:
-
model:「デフォルトでどの音声認識モデルを使用しますか?」
- 「sensevoice(推奨)」— 中国語、英語、日本語、韓国語、広東語に対応し、言語、感情、音声イベントを検出できます
- 「whisper-tiny.en」— 英語のみ
-
polish:「書き起こし後に AI でテキストを整えますか?(句読点の修正、フィラーの削除、読みやすさの向上)」
- 「はい(推奨)」→
polish: true - 「いいえ、元の書き起こしを保持する」→
polish: false
- 「はい(推奨)」→
回答をすべて収集した後、一度に保存します。
ステップ 1:音声ファイルを取得
ユーザーがファイルパスを指定していない場合は、次のように尋ねます:
「書き起こす音声ファイルのパスを指定してください。」
ファイルが存在することを確認してから先に進みます。
ステップ 2:確認
准备转录:
文件:{filename}
模型:{model}
润色:{是 / 否}
继续?
ステップ 3:書き起こし
メタデータを取得するため、JSON 出力を指定して coli asr を実行します:
coli asr -j --model {model} "{file}"
初回の実行時に、coli は必要なモデルを自動的にダウンロードします。少し時間がかかることがあります。モデルがまだダウンロードされていない場合は、ユーザーに伝えてください。
JSON の結果を解析して、text、lang、emotion、event、duration を取り出します。
ステップ 4:文章を整える(有効な場合)
polish が true の場合、書き起こし結果の生の text を受け取り、句読点を修正し、フィラーを取り除き、読みやすく書き直します。元の意味と話者の意図は保持してください。要約や言い換えはしないでください。
ステップ 5:結果を提示
会話内に書き起こし結果を直接表示します:
转录完成
{transcript text}
─────────────────
语言:{lang} · 情绪:{emotion} · 时长:{duration}s
文章を整えた場合は、AI による調整済みであることを添えて、整えたバージョンを表示します。希望があれば元の書き起こしも表示できると伝えてください。
ステップ 6:Markdown としてエクスポート(任意)
結果を提示した後、次のように尋ねます:
Question: "保存为 Markdown 文件到当前目录?"
Options:
- "是" — save to current directory
- "否" — done
はいの場合、{audio-filename}-transcript.md を現在の作業ディレクトリ(ユーザーが Claude Code を実行している場所)に書き込みます。ファイルには書き起こしテキスト(磨き上げが有効な場合は整えたバージョン)を含め、次のフロントマターを付けます:
---
source: {original audio filename}
date: {YYYY-MM-DD}
model: {model used}
duration: {duration}s
lang: {detected language}
---
{transcript text}
組み合わせ
- 呼び出し元:録音した音声の書き起こしが必要な今後のスキル
- 呼び出すもの:なし
使用例
"このファイルを文字起こししてください meeting.m4a"
- 前提条件を確認します
- 設定を読み込みます
- 確認します:meeting.m4a、sensevoice、整文は有効
coli asr -j --model sensevoice "meeting.m4a"を実行します- 生のテキストを整文します
- インラインで表示します
"interview.wav を文字起こししてください。整文なし"
- 前提条件を確認します
- 設定を読み込みます
- このセッションでは整文を無効にします
coli asr -j --model sensevoice "interview.wav"を実行します- 整文前の文字起こしをインラインで表示します