MoneyPrinterTurbo TTS Providers: The Complete List of Supported Engines

MoneyPrinterTurbo supports four TTS providers: Azure TTS v1, Azure TTS v2, SiliconFlow TTS, and Google Gemini TTS, selectable via the Audio Settings panel or programmatically through the app.services.voice module.

The open-source video generation framework harry0703/MoneyPrinterTurbo ships with a flexible text-to-speech architecture that accommodates multiple cloud and edge-based voice engines. All provider implementations reside in the app/services/voice.py module, exposing a unified interface for generating narration audio.

Supported TTS Providers in MoneyPrinterTurbo

MoneyPrinterTurbo integrates four distinct voice synthesis backends, each optimized for different latency, quality, and cost requirements:

  • Azure TTS v1 (azure-tts-v1): A lightweight, synchronous wrapper around Microsoft's Edge TTS client (edge_tts.Communicate). Ideal for quick prototyping without Azure Speech SDK dependencies.
  • Azure TTS v2 (azure-tts-v2): The full-featured Azure Speech SDK implementation (azure.cognitiveservices.speech) supporting word-boundary callbacks and enterprise-grade features.
  • SiliconFlow TTS (siliconflow): HTTP-based integration with SiliconFlow's TTS API, supporting models like FunAudioLLM/CosyVoice2-0.5B.
  • Google Gemini TTS (gemini-tts): Integration with Google's Gemini 2.5 Flash preview TTS model via the google.generativeai library.

The active provider is determined by the tts_server configuration value, which the web UI exposes as a dropdown selector.

How TTS Provider Selection Works

The selection mechanism operates at two layers: the user interface and the dispatch logic.

Web UI Configuration

In webui/Main.py (lines 48-53), the Audio Settings panel populates a selectbox with the four supported identifiers:

tts_servers = [
    ("azure-tts-v1", "Azure TTS V1"),
    ("azure-tts-v2", "Azure TTS V2"),
    ("siliconflow", "SiliconFlow TTS"),
    ("gemini-tts", "Google Gemini TTS"),
]

When a user selects a provider, the application stores the corresponding key in config.ui["tts_server"].

Backend Dispatch Logic

The voice.tts function in app/services/voice.py (lines 1127-1159) acts as a router. It inspects the configuration and delegates to the appropriate implementation:


# Simplified dispatch pattern from voice.py

if config.ui["tts_server"] == "azure-tts-v1":
    return azure_tts_v1(...)
elif config.ui["tts_server"] == "azure-tts-v2":
    return azure_tts_v2(...)
elif config.ui["tts_server"] == "siliconflow":
    return siliconflow_tts(...)
elif config.ui["tts_server"] == "gemini-tts":
    return gemini_tts(...)

This architecture allows code to remain provider-agnostic while supporting provider-specific optimizations.

Implementing TTS in Your Code

You can interact with MoneyPrinterTurbo's TTS system either through the high-level abstraction or by calling provider-specific functions directly.

Using the High-Level voice.tts Helper

The recommended approach uses the dispatch wrapper, which respects the user's UI selection:

from app.services import voice as vs

text = "Hello, world!"
voice_name = "en-US-JennyNeural"
voice_file = "/tmp/tts-output.mp3"
voice_rate = 1.0

sub_maker = vs.tts(
    text=text,
    voice_name=voice_name,
    voice_file=voice_file,
    voice_rate=voice_rate,
)

The tts function automatically routes to the configured provider based on config.ui["tts_server"].

Direct Provider Invocation

For workflows requiring specific provider features, import the individual functions from app/services/voice.py:

Azure TTS v1

sub = vs.azure_tts_v1(
    text="Welcome to Money Printer Turbo",
    voice_name="en-US-JennyNeural",
    voice_rate=1.0,
    voice_file="welcome-azure-v1.mp3",
)

Implementation reference: lines 1170-1199 of app/services/voice.py.

Azure TTS v2

sub = vs.azure_tts_v2(
    text="Welcome to Money Printer Turbo",
    voice_name="en-US-JennyMultilingualNeural",
    voice_file="welcome-azure-v2.mp3",
)

Implementation reference: lines 1343-1385 of app/services/voice.py.

SiliconFlow TTS

sub = vs.siliconflow_tts(
    text="Welcome to Money Printer Turbo",
    model="FunAudioLLM/CosyVoice2-0.5B",
    voice="FunAudioLLM/CosyVoice2-0.5B:alex",
    voice_file="welcome-siliconflow.mp3",
    voice_rate=1.0,
    voice_volume=1.0,
)

Implementation reference: lines 1205-1235 of app/services/voice.py.

Google Gemini TTS

sub = vs.gemini_tts(
    text="Welcome to Money Printer Turbo",
    voice="en-US-Standard-B",
    voice_rate=1.0,
    voice_volume=1.0,
    voice_file="welcome-gemini.mp3",
)

Implementation reference: lines 1438-1465 of app/services/voice.py.

Key Implementation Files

Understanding the file structure helps when extending or debugging TTS functionality:

  • app/services/voice.py: Core implementation containing azure_tts_v1, azure_tts_v2, siliconflow_tts, gemini_tts, and the dispatch wrapper tts.
  • webui/Main.py: UI layer defining the TTS provider dropdown (lines 48-53) that populates the tts_servers list.
  • test/services/test_voice.py: Unit test coverage validating each provider's integration and audio generation pipeline.

Summary

  • MoneyPrinterTurbo supports four TTS providers: Azure TTS v1, Azure TTS v2, SiliconFlow, and Google Gemini.
  • Provider selection occurs via the Audio Settings dropdown in webui/Main.py, stored in config.ui["tts_server"].
  • The voice.tts helper in app/services/voice.py (lines 1127-1159) automatically routes requests to the active provider.
  • Direct invocation of provider-specific functions allows access to unique parameters like SiliconFlow's model selection or Gemini's voice identifiers.
  • All implementations return a subtitle maker object (sub_maker) for synchronized caption generation.

Frequently Asked Questions

How do I switch between TTS providers in MoneyPrinterTurbo?

Navigate to the Audio Settings panel in the web UI and select your preferred engine from the TTS Server dropdown. Alternatively, programmatically set config.ui["tts_server"] to "azure-tts-v1", "azure-tts-v2", "siliconflow", or "gemini-tts" before calling voice.tts.

What is the difference between Azure TTS v1 and v2 in MoneyPrinterTurbo?

Azure TTS v1 uses the open-source edge_tts library for synchronous, edge-based synthesis without requiring Azure Speech SDK credentials. Azure TTS v2 leverages the official azure.cognitiveservices.speech SDK, supporting advanced features like word-boundary callbacks and enterprise speech resource management, but requires valid Azure subscription keys.

Can I use custom voice models with MoneyPrinterTurbo's TTS system?

Yes, but implementation varies by provider. SiliconFlow TTS explicitly supports custom model selection via the model parameter (e.g., FunAudioLLM/CosyVoice2-0.5B). For Azure providers, voice customization depends on Azure's available neural voices. The modular architecture in app/services/voice.py allows developers to add new provider functions following the existing pattern.

Where are the TTS provider configurations stored in the codebase?

The list of available providers is hardcoded in webui/Main.py lines 48-53 as the tts_servers tuple list. The active selection is stored in the runtime configuration dictionary under config.ui["tts_server"], which the dispatch logic in app/services/voice.py references to route requests to the appropriate implementation function.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →