Kristopher Baker iOS · プロダクト開発 · システムとツール
← Aoede

decision · 2026.06.07 · 約1分

KokoroをCore MLからMLXへ切り替え

Aoedeの最初のKokoro実装は、FluidAudioとCore MLを使っていました。端末上で動かすには自然な選択でしたが、M5 Macでは試したすべての実行構成でクラッシュしました。GPUではMetal JITのエラーが出て、CPUとNeural EngineではBNNSの内部で失敗しました。同じライブラリが古いApple siliconでは動いたため、モデル自体の問題ではなさそうでした。

そこでKokoroの実行基盤をMLX版へ置き換えました。MLXはM5で動き、各トークンの時刻も取得できるため、同期する単語ハイライトの精度も上がりました。一方でMetalツールチェーンと実際のGPUが必要です。そのため音声プロバイダーは、swift buildでビルドするパッケージではなくアプリターゲットに置いています。iOS Simulatorでは動かないので、Apple音声へ切り替えます。

Core ML版は、ハードウェア対応が変わった場合に戻せるようブランチへ残しました。今のところ、実際に使うMacで動き、リーダーへより正確な時刻を渡せるMLXの方が合っています。