MOSS-TTS-Nano
CoreML によるストリーミング音声合成と音声クローン。48 kHz ステレオ、80 ms チャンクで出力します。
Apache-2.0 · aufklarer/MOSS-TTS-Nano-100M-CoreML
コマンドライン
speech speak "Hello world." --engine moss-nano -o hello.wav
speech speak "The weather is nice today." --engine moss-nano \
--voice-sample reference.wav --moss-nano-seed 1 -o cloned.wav
speech speak "Hello world." --engine moss-nano --stream --play -o streamed.wav--voice-sample で音声をクローンできます。参照音声の文字起こしは不要です。モノラル参照はステレオ化し、48 kHz にリサンプリングして 80 ms 境界まで補完します。一度符号化した参照コードは複数のリクエストで再利用できます。
--moss-nano-model | aufklarer/MOSS-TTS-Nano-100M-CoreML | モデルリポジトリまたはローカルディレクトリ |
--moss-nano-compute-units | cpu | cpu または gpu |
--moss-nano-max-frames | 300 | 最大 80 ms フレーム数。自然終了が必要 |
--moss-nano-seed | 0 | 再現可能な Swift サンプリングシード |
Swift API
import AudioCommon
import MossTTSNano
let model = try await MossTTSNanoModel.fromPretrained()
let reference = try await model.encodeReference(url: referenceURL)
let result = try await model.synthesize(
text: "The weather is nice today.", reference: reference,
options: MossTTSNanoOptions(maxFrames: 300, seed: 1))
try WAVWriter.writeStereo(left: result.left, right: result.right,
sampleRate: 48000, to: outputURL)MossTTSNanoModel はリクエストを直列化し、発話ごとに新しい CoreML 状態を作成します。synthesize と synthesizeStream はステレオを保持し、SpeechGenerationModel はモノラルにミックスします。language: nil を指定してください。ストリームは空の最終マーカーで終了します。
制限と測定
macOS 15+ / iOS 18+ が必要です。コンパイル済みの 4 モデルは計 367.6 MB。プロンプト、参照、要求フレームは 1,024 行のコンテキストを共有します。超過時や自然終了前に maxFrames に達した場合はエラーになります。既定は CPU、gpu は CPU+GPU を許可します。PCG64 のシードは NumPy と互換ですが、バックエンドの数値差で出力が変わる場合があります。
M5 Pro、48 GB、macOS 26.6.2 の Python/CoreML で測定。バックエンドごとに独立プロセスを使い、各条件でウォーム実行を 5 回行いました。参照は 2.72 秒。初回とウォーム値には参照読み込み、エンコーダー読み込み、符号化を含み、キャッシュ時は参照コードを再利用します。合成モデル読み込みは除外。RSS は PyTorch と ASR を含まない Python プロセス全体です。Swift や iPhone の測定値でも話者類似度の評価でもありません。
| バックエンド | 最大 RSS | 最初のトークン:初回 / ウォーム / キャッシュ | 最初の音声:初回 / ウォーム / キャッシュ |
|---|---|---|---|
| CPU | 779 MiB | 542 / 203 / 52 ms | 563 / 216 / 65 ms |
| CPU+GPU | 731 MiB | 649 / 225 / 24 ms | 741 / 245 / 48 ms |
Swift · Release
同じ M5 Pro のネイティブ Swift release CLI。新規プロセスごとに同じ参照・テキスト・シードで 1 回実行。参照準備を含み、合成モデルの読み込みは除外します。RSS は ASR 重みを含まない CLI 全体。横線は未測定のウォーム・キャッシュ条件です。両出力とも独立 ASR で要求文と完全一致しました。
| バックエンド | 最大 RSS | 最初のトークン:初回 / ウォーム / キャッシュ | 最初の音声:初回 / ウォーム / キャッシュ |
|---|---|---|---|
| CPU | 670.7 MiB | 537 / — / — ms | 560 / — / — ms |
| CPU+GPU | 602.5 MiB | 570 / — / — ms | 645 / — / — ms |