
音声も動画も、話者ごとにラベル付け。
Who はポッドキャスト、インタビュー、通話、会議のために作られており、どんな長さの録音にも対応します。50 分のインタビューは MacBook Pro で 3 秒、すべて端末上で処理されます。タイムスタンプを使えば、文字起こしに話者ラベルを付けたり、ゲストが次に話す箇所へ飛んだり、話者が変わるたびにカットしたりできます。
Who は話者に、最初に話した順で番号を振ります。2 人が同時に話しているときは、両方の話者をラベル付けします。録音は 5 分の区間ごとに一度に処理し、区間をまたいで声を照合します。
AMI の会議録音では、Who の話者ラベルの誤り率は 12.6% で、サーバー GPU 上の pyannote の 13.1%、同じ Mac 上の FluidAudio の 19.4% を下回ります。速度も FluidAudio の 2 倍です。
1 時間の音声を 4 秒で。
Who は M5 Pro 搭載の MacBook Pro で、SDK 経由で実時間の 950 倍で動きます。AMI の会議でのダイアライゼーション誤り率は、Who が 12.6%、pyannote が 13.1%、FluidAudio が 19.4% です。
1 台の MacBook Pro(M5 Pro)で、テストセット全体を 1 本ずつ処理。Who の時間にはモデルの読み込みを含みます。AMI での FluidAudio は、自身の計測で 73 秒、モデルの読み込みを含めると 79 秒です。
| テストセット | Who の時間 | Who の実時間比 | FluidAudio の実時間比 |
|---|---|---|---|
| AMI test, 544 minutes | 34s | 950x | 445x |
| VoxConverse test, 43.5 hours | 165s | 948x | 426x |
録音全体でのダイアライゼーション誤り率(低いほど良い)。どの行も同じ録音と同じ採点ツールで評価
| モデル | AMI | VoxConverse、話者 4 人まで | NOTSOFAR-1、話者 4 人まで | Earnings-21 | DiPCo |
|---|---|---|---|---|---|
| Who, on the Neural Engine | 12.6% | 8.4% | 16.2% | 27.7% | 41.1% |
| pyannote community-1, PyTorch | 13.1% | 7.3% | 18.7% | 7.3% | 33.4% |
| FluidAudio, Core ML | 19.4% | 9.6% | 32.7% | 12.0% | 42.7% |
Who は会議の 2 セット(AMI と NOTSOFAR-1)で他を上回り、残る 3 セットでは pyannote に及びません。Earnings-21 の通話は話者が最大 20 人にのぼり、話者 9 人以上の VoxConverse では Who の誤り率は 24.7% です。pyannote はサーバー GPU で、Who と FluidAudio は M5 Pro の Neural Engine で実行しました。pyannote と FluidAudio のスコアは当社で実行したもので、モデルカードには載っていません。
ユースケース
音声も動画も、話者ごとにラベル付け。.
文字起こしに話者ラベルを付ける
Who と Voz を組み合わせれば、文字起こしの各行に誰が話したかが表示されます。読み手は、誰の発言かわからないひと続きのテキストではなく、会話の流れを追えます。
ゲストの次の発言へ飛ぶ
2 時間のインタビューや会議を 1 人の話者で絞り込み、タイムラインを行き来せずに、その人の発言へ直接移動できます。録音は端末から出ません。
話者が変わるたびにカットする
2 カメラのインタビューや動画ポッドキャストで、話者が変わるところでカメラアングルを切り替えます。どの発話区間にも開始時刻と終了時刻があるので、話者の交代がそのままカットポイントになります。
笑い声を除く
観客の笑い声や、部屋の離れた場所から一言だけ発した声を外せます。Who は、録音に占める割合が設定した値に満たない話者をすべて除き、残りの話者に番号を振り直します。
モデルができること
- Who は 5 分の区間ごとに最大 4 人の話者をラベル付けし、区間をまたいで声を照合することで、録音全体ではそれ以上の話者に対応します。
- 発話区間は 1 人の話者のひと続きの発話で、話者番号と、秒単位(10 ms 刻み)の開始・終了時刻を持ちます。複数人が重なって話すと、異なる話者の発話区間も重なります。
- SDK 上の Who は、最初に話した順に 0 から話者番号を振ります。名前で人物を特定することはありません。
- Neural Engine 上の 2 つの Core ML グラフ(エンコーダーとクエリグラフ)が各区間を処理します。3 つ目のグラフが、各話者が単独で話している部分からその話者の声紋を作り、Who は録音全体のすべての話者を一度に照合します。
- 単独での発話が 1 秒未満の話者は自分の声紋を持たず、時間的に最も近い話者にまとめられます。他の人の発話区間の中にある 1 秒の笑い声は、その発話区間の話者に割り当てられます。
- SDK 経由、M5 Pro 搭載の MacBook Pro で実時間の 950 倍。AMI の会議 544 分を 34 秒で処理します。8-bit ビルドは 953 倍です。
- SDK 経由のメモリ使用量:モデル読み込み後で 275MB。ピークは 8 分の録音で 336MB、34 分の録音で 437MB、2.65 時間の録音で 927MB です。
- Core ML のダウンロードサイズは float16 で 81MB、8-bit の重みなら 42MB で、AMI の会議での誤り率はどちらも 12.6% です。Neural Engine が読み込み時に重みを展開するため、8-bit ビルドでもメモリは減りません。
- Who には 49MB の LiteRT ビルドと 99MB の ONNX ビルドもあります。LiteRT ビルドは Android、Linux、Windows 上で SDK が実行しますが、ONNX ビルドに対応した SDK はまだありません。CPU のみの場合、LiteRT ビルドは 544 分の音声を M5 Pro で 87 秒、24 コアの AMD EPYC サーバーで 191 秒で処理します(SDK の外で計測)。
keepingSpeakers(minimumShare:)は、録音に占める割合が指定値に満たない話者をすべて除いて残りに番号を振り直すので、笑い声、拍手、ジングルが結果から外れます。5% に設定すると、当社で試したポッドキャストでは笑い声と観客の声がなくなりました。短く発言する話者が多いニュース番組では、割合を低くするか、オフにしてください。- 音声ファイルは URL かパスで指定してダイアライゼーションできます。任意のサンプルレートのモノラルサンプルも渡せます。レート変換は SDK が行います。
- SDK は初回利用時に Hugging Face から重みをダウンロードし、キャッシュします。
download(progress:)で事前に取得でき、Who(directory:)を使えば、自分で管理するフォルダからオフラインで実行できます。
はじめに
誰が何を話したか を、数行のコードで iOS or macOS or Android アプリに追加。 Who のドキュメント.
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.0.0")
// target dependency
.product(name: "Who", package: "desert-ant-core")
import Who
let who = Who() // downloads on first use
let result = try await who.diarize(contentsOf: url)
result.speakerCount // 3
for turn in result.turns {
print(turn.speaker, turn.start, turn.end) // 0 12.4 15.9
}
Add Who from Desert Ant Labs to this Swift project (iOS, macOS). What it does: Who:音声・動画向けのオンデバイス話者ラベリング. SDK: Swift (iOS, macOS) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme // Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.0.0") // target dependency .product(name: "Who", package: "desert-ant-core") Reference: - Model page: https://desertant.com/models/who/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
import ai.desertant.who.Who
val who = Who(context) // downloads on first use
val result = who.diarize(samples, 16_000.0)
result.speakerCount // 3
for (turn in result.turns) {
println("${turn.speaker} ${turn.start} ${turn.end}") // 0 12.4 15.9
}
who.close()
Add Who from Desert Ant Labs to this Kotlin project (Android).
What it does: Who:音声・動画向けのオンデバイス話者ラベリング.
SDK:
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:who:4.0.0")
Reference:
- Model page: https://desertant.com/models/who/
- Full catalog and other models: https://desertant.com/llms.txt
Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
仕様
- 速度
- MacBook Pro(M5 Pro)で実時間の 950 倍、50 分のインタビューを 3 秒
- 精度
- AMI の会議でダイアライゼーション誤り率 12.6%。話者 4 人までの VoxConverse で 8.4%
- 話者数
- 5 分の区間ごとに最大 4 人。どんな長さの録音でも、全体ではそれ以上
- 出力
- 話者ごとの発話区間と、秒単位(10 ms 刻み)の開始・終了時刻。重なった発話も保持
- オンデバイスサイズ
- 81MB Core ML(float16、既定)。8-bit の重みで 42MB
- メモリ
- モデル読み込み後 275MB。2.65 時間の録音でピーク 927MB
- プラットフォーム
- iOS 18+、macOS 15+、tvOS 18+、visionOS 2+(Core ML)。Android、Linux、Windows(LiteRT、CPU で実行)
Who は、ポッドキャストやインタビュー、各自が自分のマイクを使うリモート通話のような、近接収音した音声で最も力を発揮します。マイクから離れていると、Who が取りこぼす発話は増えます。部屋の離れた位置のマイクで録音したグループの会話では 19〜21%、ヘッドセットを使った会議では 8% です。最も多く取りこぼすのは、2 人が同時に話しているときです。VoxConverse での誤り率は、話者 1〜2 人で 8%、5〜8 人で 17%、9 人以上で 25% です。最大 20 人の話者が短く発言する Earnings-21 の通話では、Who は発話の 16% を別の話者に割り当てます。Who は話者を名前ではなく番号でラベル付けし、文字起こしは行いません。話者ラベル付きの文字起こしが必要なら、Who と Voz を組み合わせてください。Android、Linux、Windows では、Who は CPU で動作し、Neural Engine 上より 3〜7 倍遅くなります。Who はまだブラウザや Node では動きません。
FAQ
Who とは?
録音の話者にラベルを付け、一人ひとりがいつ話し始め、いつ話し終えるかを正確に確認できます。処理はすべて端末上で行います。
Who はオンデバイスで動作しますか?
はい。Who はデバイス上で動作し、サーバーへの通信は発生しません。データはユーザーの手元に残ります。
Who はどのプラットフォームに対応していますか?
Who は Swift, Kotlin 向けのネイティブなオンデバイス SDK として提供されます。
Who の料金はいくらですか?
各モデルは月間アクティブデバイス 100k 台まで無料です。推論は無制限です。 カスタムライセンスについては、お問い合わせください。
Who の精度や速度はどれくらいですか?
Who は M5 Pro 搭載の MacBook Pro で、SDK 経由で実時間の 950 倍で動きます。AMI の会議でのダイアライゼーション誤り率は、Who が 12.6%、pyannote が 13.1%、FluidAudio が 19.4% です。