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 likeFunAudioLLM/CosyVoice2-0.5B. - Google Gemini TTS (
gemini-tts): Integration with Google's Gemini 2.5 Flash preview TTS model via thegoogle.generativeailibrary.
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 containingazure_tts_v1,azure_tts_v2,siliconflow_tts,gemini_tts, and the dispatch wrappertts.webui/Main.py: UI layer defining the TTS provider dropdown (lines 48-53) that populates thetts_serverslist.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 inconfig.ui["tts_server"]. - The
voice.ttshelper inapp/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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →