Gtts: Male Voice Link
engine.say("Hello, I am a male voice using pyttsx3") engine.runAndWait()
import pyttsx3 engine = pyttsx3.init() voices = engine.getProperty('voices') for v in voices: print(v.id, v.name, v.gender) # Some show gender Pick a male voice (e.g., 'HKEY_LOCAL_MACHINE\SOFTWARE...' on Windows) for v in voices: if 'male' in v.name.lower(): engine.setProperty('voice', v.id) break gtts male voice
from gtts import gTTS tts = gTTS(text="Hello", lang="en") # always the default voice (female) The only reliable way is to switch to a different TTS engine or post-process the audio (pitch shifting). Here’s a clean Python approach using pydub to lower the pitch of the GTTS output, making it sound more masculine. Step-by-step male voice transformation: from gtts import gTTS from pydub import AudioSegment from pydub.effects import speedup import io def gtts_male_voice(text, lang='en', pitch_semi= -3): # Generate normal GTTS audio tts = gTTS(text, lang=lang) fp = io.BytesIO() tts.write_to_fp(fp) fp.seek(0) engine
This is a timbre shift, not a true male voice model. It sounds deeper but may be slightly robotic. 3. Better Alternative: Use pyttsx3 (Offline, Male Voice Selectable) If you need real male voices without cloud dependency, use pyttsx3 (works on Windows, macOS, Linux). It sounds deeper but may be slightly robotic
return male_audio male_audio = gtts_male_voice("This is a male-sounding voice using GTTS.") male_audio.export("male_voice.mp3", format="mp3")