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の方が合っています。