34 lines
909 B
Python
34 lines
909 B
Python
# -*- coding: utf-8 -*-
|
||
"""语音合成模块(pyttsx3 离线 TTS)"""
|
||
|
||
import os
|
||
import pyttsx3
|
||
|
||
|
||
def text_to_speech(text: str, out_path: str, rate: int = 160) -> str:
|
||
"""将文本合成为音频文件。
|
||
|
||
Args:
|
||
text: 待合成文本
|
||
out_path: 输出音频路径(如 output/audio/1.mp3)
|
||
rate: 语速
|
||
|
||
Returns:
|
||
str: 输出文件路径
|
||
"""
|
||
os.makedirs(os.path.dirname(out_path), exist_ok=True)
|
||
engine = pyttsx3.init()
|
||
engine.setProperty("rate", rate)
|
||
# 选择第一个可用语音(不同系统可能不同)
|
||
voices = engine.getProperty("voices")
|
||
if voices:
|
||
engine.setProperty("voice", voices[0].id)
|
||
engine.save_to_file(text, out_path)
|
||
engine.runAndWait()
|
||
engine.stop()
|
||
return out_path
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print(text_to_speech("你好,这是一段测试语音。", "output/audio/test.mp3"))
|