MOSS-VoiceGenerator

รุ่นทดลอง

สร้าง SDK แบบเนทีฟจากซอร์ส main โดย Homebrew และ CLI ที่สร้างไว้ล่วงหน้าอื่นอาจยังไม่มีเอนจินเหล่านี้

ออกแบบเสียงด้วย MLX แบบเนทีฟจากบทพูดตรงตามต้นฉบับและคำสั่งเสียง ส่งออก PCM โมโน 24 kHz โดยไม่ต้องใช้เสียงอ้างอิง

MOSS-VoiceGenerator คงน้ำหนักภาษา BF16 และโคเดกสังเคราะห์ FP32 ใช้ --stream สำหรับ PCM ทีละส่วน ไม่ต้องระบุ --language แต่ให้ใส่ภาษาใน --instruct การจบงานจะระบายข้อมูลครบทั้งสิบหกโค้ดบุ๊ก

สร้าง SDK จากซอร์ส

การนำไปใช้ (PR #541): main

git clone --single-branch --branch main https://github.com/soniqo/speech-swift.git
cd speech-swift
make build

บันเดิล MLX ที่เผยแพร่แล้ว: aufklarer/MOSS-VoiceGenerator-MLX-bf16

บรรทัดคำสั่ง

.build/release/speech speak "The little boat crossed the quiet lake before sunset." \
  --engine moss-voicegenerator \
  --moss-voicegenerator-model-id aufklarer/MOSS-VoiceGenerator-MLX-bf16 \
  --instruct "A warm adult female voice, speaking English slowly." \
  --stream --seed 42 --output moss.wav

ระบุข้อความหนึ่งรายการ --instruct และเลือกไดเรกทอรีบันเดิลหรือ ID โมเดลที่เข้ากันได้อย่างใดอย่างหนึ่ง ไม่รองรับเสียงอ้างอิง ผู้พูดคงที่ หรือข้อมูลแบบแบตช์

ช่องข้อความและคำสั่งแต่ละช่องจำกัดที่ 32,768 ไบต์ UTF-8 พรอมป์ต์อินพุตทั้งหมดหลังประกอบรวมเทมเพลตต้องไม่เกิน 4,096 โทเค็น ระบบจะปฏิเสธอินพุตที่เกินขีดจำกัดใดก็ตาม

ตัวเลือก TTS ตามคำสั่ง

Swift API

import MossVoiceGeneratorTTS

let model = try await MossVoiceGeneratorModel.fromPretrained(
    modelId: "aufklarer/MOSS-VoiceGenerator-MLX-bf16")
let output = try await model.generate(
    text: "The little boat crossed the quiet lake before sunset.",
    instruction: "A warm adult female voice, speaking English slowly.",
    options: .init(maxFrames: 150, seed: 42))
let pcm = output.samples
model.unload()

ผลวัดรันไทม์จากข้อความสั้น

M5 Pro, 48 GiB, Release ใช้ข้อความสั้นที่เป็นกลางหนึ่งข้อความต่อภาษา รายงานมัธยฐานของคำขอหลังวอร์มสามครั้งหลังคำขอแรก ไม่รวมการโหลดและตรวจสอบน้ำหนัก แคชไฟล์ถูกวอร์มแล้ว RTF = เวลาทำงาน / ความยาวเสียง ค่ายิ่งต่ำยิ่งเร็ว หน่วยความจำกายภาพคือค่าสูงสุดของกระบวนการขณะโหลดและคำขอทั้งสี่ ในหน่วย GB ฐานสิบ

ข้อความเสียง (s)PCM แรกหลังวอร์ม (s)RTFหน่วยความจำกายภาพสูงสุด (GB)
ภาษาอังกฤษ3.440.4700.6108.448
ภาษาจีนกลาง4.880.4570.5728.619

เสียงภาษาอังกฤษที่จับเวลายังมีผลถอดเสียงไม่ตรงกัน โดย Parakeet เพิ่ม “and” ท้ายประโยค ส่วน Qwen3-ASR ตรงกับต้นฉบับทั้งหมด เก็บผลทั้งสองไว้

ขอบเขตการตรวจสอบ

ยังไม่ได้ให้คะแนนคุณภาพการทำตามคำสั่ง ผลวัดข้อความสั้นอธิบายเฉพาะชุดทดสอบนี้ การรับรองการถดถอยด้านเวลาแฝงยังสรุปไม่ได้

TTS ตามคำสั่งแบบเนทีฟ

แหล่งที่มา