如何在Google Text to Speech API(gTTS)中调整发音音调
gTTS音调调整实现方案
gTTS本身没有提供直接调整音调的原生参数,它底层调用的是谷歌翻译的公开TTS接口,官方未开放音调自定义能力,仅支持通过slow参数切换正常/慢速两种语速。
以下是两种可落地的实现方案:
方案1:配合音频处理库后期调整(推荐,兼容现有gTTS流程)
可以用pydub库对gTTS生成的音频文件做后期音调处理,操作成本最低,适合小批量需求。
前置依赖安装
- 安装Python库:
pip install gTTS pydub - 安装ffmpeg(pydub的底层依赖,对应系统的软件源/官网直接安装即可)
示例代码
from gtts import gTTS from pydub import AudioSegment from pydub.playback import play # 1. 用gTTS生成原始语音 tts = gTTS("ご返信ありがとうございます。", lang = 'ja') tts.save("original.mp3") # 2. 加载音频文件 sound = AudioSegment.from_mp3("original.mp3") # 3. 调整音调:pitch_shift为半音数,正数升调、负数降调,±3以内效果最自然 pitch_shift = 2 # 升高2个半音 octave = pitch_shift / 12 new_sample_rate = int(sound.frame_rate * (2 ** octave)) adjusted_sound = sound._spawn(sound.raw_data, overrides={"frame_rate": new_sample_rate}) # 重置为常规采样率,避免播放/导出异常 adjusted_sound = adjusted_sound.set_frame_rate(44100) # 4. 导出调整后的音频或直接播放 adjusted_sound.export("pitch_adjusted.mp3", format="mp3") play(adjusted_sound)
方案2:切换为谷歌云正式Text-to-Speech API
如果需要更精准的音调控制(比如按片段调整、大跨度音调调整无失真),可以换用谷歌官方的Cloud Text-to-Speech服务,它原生支持pitch参数,可调范围为-20到20半音,同时支持语速、音量、发音人等多维度自定义,发音质量也比gTTS调用的翻译接口更高。
该服务有免费使用额度,超出部分按量计费,需要先开通谷歌云账号并创建对应服务密钥。
核心参数设置示例
from google.cloud import texttospeech client = texttospeech.TextToSpeechClient() synthesis_input = texttospeech.SynthesisInput(text="ご返信ありがとうございます。") voice = texttospeech.VoiceSelectionParams( language_code="ja-JP", name="ja-JP-Neural2-B" ) # 直接通过pitch参数调整音调 audio_config = texttospeech.AudioConfig( audio_encoding=texttospeech.AudioEncoding.MP3, pitch=2.0 # 升高2个半音,填负数即为降调 ) response = client.synthesize_speech( input=synthesis_input, voice=voice, audio_config=audio_config ) with open("output.mp3", "wb") as out: out.write(response.audio_content)
注意事项
- 用pydub后期调整音调时,建议调整幅度控制在±3个半音以内,幅度过大容易出现发音失真、变速的问题
- 如果需要同时调整语速,可直接在gTTS初始化时添加
slow=True参数切换为慢速,也可以用pydub的速率调整功能做更精细的控制
内容的提问来源于stack exchange,提问作者Masaki93
相关产品推荐
相关产品推荐

