Generation Times
| Script | Audio Duration | Fish Audio (API) | VoxCPM2 (MPS) | RTF (VoxCPM) | Winner |
|---|---|---|---|---|---|
| Short (~10 words) | 2.2s | 3.42s | 9.52s | 4.25 (4x slower than realtime) | Fish |
| Medium (~45 words) | 11.4s | 5.81s | 11.29s | 0.99 (nearly realtime) | Fish |
| Long (~90 words) | 24.0s | 9.37s | 23.29s | 0.97 (nearly realtime) | Fish |
Audio Samples
Script 1 - Short ~10 words
"Thanks for calling. How can I help you today?"
Fish Audio (Merlino clone)
3.42s
VoxCPM2 (MPS, voice clone)
9.52s
Script 2 - Medium ~45 words
"We specialize in local and long-distance moving services. Our team handles everything from packing and loading to transport and delivery. Give us a call and we will get you a free quote within 24 hours."
Fish Audio (Merlino clone)
5.81s
VoxCPM2 (MPS, voice clone)
11.29s
Script 3 - Long ~90 words
"Moving to a new home is one of life's biggest transitions, and we are here to make it as smooth as possible. Our experienced crew has handled thousands of moves across the region. We bring all the equipment, padding, and care your belongings deserve. From studio apartments to large family homes, we have got the right crew and truck for the job. Call us today and let us take the stress out of your move."
Fish Audio (Merlino clone)
9.37s
VoxCPM2 (MPS, voice clone)
23.29s
Verdict
Keep Fish Audio. VoxCPM2 is batch-only on Mac.
- Speed: Fish Audio wins every sample. Short clips: Fish is 2.8x faster. Medium/long: VoxCPM hits ~RTF 1.0 on MPS (barely realtime, no buffer).
- Phone AI use case: Voice agents need audio generation in under 2-3 seconds for natural conversation. VoxCPM at RTF 0.97-4.25 cannot serve real-time phone calls.
- Quality: Both use the same Merlino voice reference. VoxCPM2 produces natural-sounding output but with slight robotic artifacts on short clips. Fish is cleaner on short, comparable on medium/long.
- Cost: Fish Audio is ~$0.01/request at current volume. VoxCPM2 on Mac costs $0 per request but needs Mac GPU tied up during generation (opportunity cost).
- MPS verdict: MPS works - model loaded cleanly, ran all 3 samples, no CUDA hard requirement. But M4 Max MPS is 3-4x slower than an RTX 4090 for this workload (RTF 0.97 vs 0.30 on 4090).
- VoxCPM2 is viable for: Batch pre-generation of voicemail greetings, IVR menus, and scheduled content. NOT suitable for live phone call responses.
Quality Assessment: VoxCPM2 voice cloning quality is good - it correctly captures the deep/professional tone from the Merlino reference. Fish Audio is more polished on short utterances. For production voice AI agents on SignalWire, Fish Audio remains the call.
If you want VoxCPM in production: RunPod RTX 4090 at RTF 0.30 would enable realtime (300ms latency on short clips). Cost: ~$0.44/hr for the GPU. Only worthwhile if you need zero per-call API cost AND can afford the infra management overhead.
Hardware and Setup
| Detail | Value |
|---|---|
| Mac | Apple M4 Max, 36 GB unified memory |
| PyTorch | 2.12.0 with MPS backend |
| VoxCPM2 version | 2.0.3 (openbmb/VoxCPM2 on HuggingFace) |
| Model size | 2B params, 8GB VRAM equivalent |
| Model load time | 9.7s on cold start (MPS, no torch.compile) |
| Device used | MPS (Apple Silicon Neural Engine path) |
| Voice reference | Merlino clone (Fish Audio ID: 3782f7b36e5d411fb9d70d1809b134a0) |
| Fish Audio voice | Merlino - professional male, deep, American accent |
| Inference timesteps | 10 (default) |
| Denoiser | Disabled (reduces latency ~20%) |
| torch.compile | Disabled (first-run penalty avoided) |