MOSS-TTS-Nano

Tổng hợp và nhân bản giọng nói qua CoreML, âm thanh stereo 48 kHz và khối 80 ms.

Apache-2.0 · aufklarer/MOSS-TTS-Nano-100M-CoreML

Dòng lệnh

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

Dùng --voice-sample để nhân bản giọng, không cần bản chép lời tham chiếu. Âm mono được nhân đôi thành stereo, lấy mẫu lại ở 48 kHz và đệm đến ranh giới 80 ms. Mã hóa tham chiếu một lần và tái sử dụng mã cho các yêu cầu.

--moss-nano-modelaufklarer/MOSS-TTS-Nano-100M-CoreMLKho mô hình hoặc thư mục cục bộ
--moss-nano-compute-unitscpucpu hoặc gpu
--moss-nano-max-frames300Số khung 80 ms tối đa; phải kết thúc tự nhiên
--moss-nano-seed0Hạt giống lấy mẫu Swift tái lập

API Swift

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 xử lý yêu cầu tuần tự và tạo trạng thái CoreML mới cho mỗi câu. synthesize và synthesizeStream giữ stereo; SpeechGenerationModel trả về bản trộn mono. Truyền language: nil. Luồng kết thúc bằng dấu cuối rỗng.

Giới hạn và phép đo

Cần macOS 15+ / iOS 18+; bốn mô hình biên dịch tổng cộng 367,6 MB. Prompt, tham chiếu và số khung yêu cầu dùng chung ngữ cảnh 1.024 hàng. Vượt ngữ cảnh hoặc đạt maxFrames trước khi kết thúc tự nhiên sẽ gây lỗi. CPU mặc định; gpu cho phép CPU+GPU. Hạt giống PCG64 tương thích NumPy; sai khác số học giữa các bộ xử lý vẫn có thể đổi đầu ra.

Python/CoreML trên M5 Pro, 48 GB, macOS 26.6.2; tiến trình riêng và năm yêu cầu đã làm nóng cho mỗi trường hợp. Tham chiếu dài 2,72 giây. Lần đầu/làm nóng gồm đọc, tải bộ mã hóa và mã hóa; bộ nhớ đệm dùng lại mã. Không tính tải mô hình tổng hợp. RSS gồm toàn bộ tiến trình Python, không PyTorch/ASR. Đây không phải phép đo Swift/iPhone hay độ giống người nói.

Bộ xử lýRSS đỉnhToken đầu: lần đầu / làm nóng / đệmÂm thanh đầu: lần đầu / làm nóng / đệm
CPU779 MiB542 / 203 / 52 ms563 / 216 / 65 ms
CPU+GPU731 MiB649 / 225 / 24 ms741 / 245 / 48 ms

Swift · Release

CLI Swift release gốc trên cùng M5 Pro: một yêu cầu mỗi tiến trình mới, cùng tham chiếu, văn bản và hạt giống. Có tính chuẩn bị tham chiếu, không tính tải mô hình tổng hợp. RSS là toàn bộ CLI không có trọng số ASR. Dấu gạch chỉ các trường hợp làm nóng/đệm chưa đo. Cả hai đầu ra đều được ASR độc lập chép đúng nguyên câu yêu cầu.

Bộ xử lýRSS đỉnhToken đầu: lần đầu / làm nóng / đệmÂm thanh đầu: lần đầu / làm nóng / đệm
CPU670.7 MiB537 / — / — ms560 / — / — ms
CPU+GPU602.5 MiB570 / — / — ms645 / — / — ms

MossTTSNano · OpenMOSS