yapsnap は、動画URLや音声ファイルをテキスト化するCLIツール.mp4 / .mp3 など幅広く対応--timestamps で時刻付き、--diarize で「誰が話したか」まで付けられるGitHubで公開されている yapsnap は、ひとことで言うと「動画や音声を、その場でplaintext(普通のテキスト)に変換する道具」です。
しかも、ただの文字起こしツールではありません。READMEを見る限り、このプロジェクトの気合いはかなり明確で、
という思想が前面に出ています。
この手のツールって、最近は「AIで文字起こし」と聞くと、どうしてもクラウドAPIや高性能GPUが前提になりがちです。
でも yapsnap はそこをかなり潔く切っています。自分のPCだけで、気軽に、そこそこ高性能に動かす。この方向性はかなり好感が持てます。個人的には、こういう“地に足のついたAIツール”はかなり好きです。
READMEでは、Kroko English という streaming Zipformer transducer を使い、ラップトップのCPUでも実時間の数倍で処理できると説明されています。
ここでいう「実時間の数倍」というのは、たとえば10分の音声を10分よりかなり短く処理できる、という意味です。
もちろん環境差はありますが、少なくとも「待たされすぎてつらい」タイプのツールではなさそうです。
対応範囲が広いのも強いです。
.mp4 / .mp3 URLつまり、「Web上の動画を拾って文字起こししたい」でも、「手元の会議録音をテキスト化したい」でも、同じ道具で済むわけです。
この“入口の広さ”は、実用ツールとしてかなり重要だと思います。
初回実行時に約80MBのモデルをダウンロードしますが、その後はオフラインで使えるそうです。
これは地味に大事です。
クラウド依存の文字起こしサービスは便利ですが、ネット環境、料金、API制限、機密情報の取り扱いなど、いろいろ気を使います。
yapsnap は「音声が自分のマシンから出ていかない」という安心感があるので、会議音声やインタビュー音声の扱いに向いていそうです。
READMEによると、ランタイム依存は主に
sherpa-onnxnumpyyt-dlpとのこと。
PyTorchもクラウドSDKも不要。これはかなりスッキリしています。
機械学習系のツールは、入れてみたら依存関係の森に迷い込むことがよくあります。
その点、yapsnap は「とりあえず動かす」までの心理的ハードルが低そうです。こういう軽さは正義だと思います。
READMEのQuickstartは本当にシンプルです。
pip install yapsnap
yapsnap https://www.tiktok.com/@user/video/7234567890123456789
ローカルファイルでも同じです。
yapsnap meeting.mp4 --timestamps
yapsnap interview.mp3 --diarize
yapsnap podcast.mp3 -o ~/notes/episode.txt
要するに、「入れる → 打つ → テキストが出る」だけ。
このわかりやすさはかなり魅力的です。ツールは結局、機能の多さより「最初の1回がラクかどうか」が勝負だったりします。
基本は plaintext(ただのテキスト) です。保存先はデフォルトで ./transcripts/ 配下になります。
普通の段落として出力されます。
Welcome to the show. Today we're talking about transcription. Let's get started.
--timestamps文ごとに時刻が付きます。
[00:00] Welcome to the show.
[00:03] Today we're talking about transcription.
[00:08] Let's get started.
これはあとから見返すときに便利です。
「この発言どこだっけ?」がすぐ追えるので、議事録や講義ノートにかなり向いています。
--diarizeさらに踏み込んで、誰が話したかまで付けます。
SPEAKER_00、SPEAKER_01 のようにラベルが付き、発話順に整理されます。
SPEAKER_00 [00:00]: Welcome to the show.
SPEAKER_01 [00:03]: Glad to be here, thanks for having me.
SPEAKER_00 [00:08]: Let's get started.
ここでいう diarize は、音声の中から話者を分ける処理です。
つまり、「声の特徴を見て、同じ人っぽい発話をまとめる」イメージです。
会議録や対談の文字起こしでは、この機能がかなり効きます。
個人的には、文字起こしそのものよりも、**“誰が話したか”が見えることのほうが実務では価値が高い**場面も多いと思います。
READMEには、処理の流れがかなり素直に書かれています。
Fetch
URLなら yt-dlp で音声を取ってくる。ローカルファイルならそのまま。
Decode
ffmpeg で 16kHz mono PCM に変換する。
ここで atempo による速度調整も入ります。
Recognize
Kroko English の streaming Zipformer2 transducer が音声を認識する。
Format
プレーンテキストに整える。--timestamps を付けると文単位に時刻を付ける。
--diarize を使うと、別の音声セグメンテーションモデルと speaker embedding モデルを使って、発話者ごとに分けるそうです。
ここで大事なのは、全部CPUで完結することと、音声が外部に送られないことです。
この設計は、派手さよりも堅実さを優先していて、かなり好感が持てます。
READMEでは、英語がデフォルトで、他にもフランス語、ドイツ語、スペイン語、イタリア語、ポルトガル語、オランダ語、スウェーデン語、スイスドイツ語、ヘブライ語、トルコ語などに対応できるとあります。
ただし、これはモデルの切り替えが必要です。
つまり、「どの言語でも完全にワンクリック」というより、英語以外はモデルを選ぶ前提です。
ここは少しだけ注意が必要ですが、それでも選択肢があるのはうれしいところです。
--speed で、文字起こし前に音声を速くできます。デフォルトは 1.5x です。
しかも音程は保ったまま速くするので、聞こえ方が変になりにくいようです。
これはおもしろい発想です。
人間が聞くときに「少し速くしても意味はわかる」ことが多いのと同じで、モデルに入れる前の処理を工夫してスピードを稼いでいるわけです。かなり賢いと思います。
デフォルトでは ./transcripts/<input>_transcript.txt のように保存されます。
もちろん -o で変更可能です。
この「デフォルトはわかりやすく、必要なら自由に変えられる」設計は、CLIツールとしてとてもいいです。
変に多機能すぎず、でも現場で困らない。ちょうどいい塩梅だと思います。
yapsnap の面白さは、単に「文字起こしができる」ことではないと思います。
むしろ、クラウドに頼らず、重い環境もいらず、動画URLひとつで文字情報に変えられるという体験そのものに価値があります。
今のAIツールって、派手なデモは多い一方で、「で、結局自分のPCで気軽に使えるの?」というところが弱いこともあります。
その点 yapsnap は、かなり実務的です。
「とにかく速く、静かに、余計なことをせずに動く」タイプの道具で、こういうのは長く残る気がします。
もちろん、これだけで全ての音声認識課題が解決するわけではないでしょう。
認識精度や多言語性能、長時間音声への相性など、実際には試してみないとわからない部分もあります。
でも、READMEから受ける印象としては、**“気軽に試せる実用ツール”としてかなり筋がいい**と感じました。
逆に、GUIアプリで全部完結したい人には少し向かないかもしれません。
でも、ターミナルに慣れている人にとっては、かなり気持ちよく使えそうです。
yapsnap は、「動画URLや音声ファイルを、CPUだけで、クラウドなしで、すぐテキスト化する」という、かなり潔い文字起こしツールです。
派手なAIサービスというより、ちゃんと使える道具としての魅力が強いです。
個人的には、この手のプロジェクトは「便利そう」より「実際に自分の作業をどれだけ軽くするか」が重要だと思っていて、その意味で yapsnap はかなり有望に見えます。
文字起こしをもっと身近にしたい人には、かなり刺さるのではないでしょうか。