Gtts Male Voice [RECOMMENDED]

from google.cloud import texttospeech client = texttospeech.TextToSpeechClient() synthesis_input = texttospeech.SynthesisInput(text="Hello, I am a male voice") voice = texttospeech.VoiceSelectionParams( language_code="en-US", name="en-US-Neural2-D", # Male voice ssml_gender=texttospeech.SsmlVoiceGender.MALE ) audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3) response = client.synthesize_speech(input=synthesis_input, voice=voice, audio_config=audio_config)

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) gtts male voice

On Windows, David (male) is usually available. On macOS, use 'com.apple.speech.synthesis.voice.vegas' (male). If you need professional male voices (like en-US-Neural2-D or en-GB-Neural2-B ), use Google Cloud Text-to-Speech — but not the free gtts . from google

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). On macOS, use 'com

return male_audio male_audio = gtts_male_voice("This is a male-sounding voice using GTTS.") male_audio.export("male_voice.mp3", format="mp3")

# Change pitch (negative = lower, positive = higher) # Lower pitch simulates male voice new_sample_rate = int(audio.frame_rate * (2.0 ** (pitch_semi / 12.0))) male_audio = audio._spawn(audio.raw_data, overrides='frame_rate': new_sample_rate) male_audio = male_audio.set_frame_rate(audio.frame_rate)

# Load audio audio = AudioSegment.from_file(fp, format="mp3")