Files
meme/tts/examples.py
konjacpotato 6772699cfe
Some checks failed
Gitea Actions Demo / deploy (push) Failing after 2s
commit code
2025-12-29 19:34:39 +08:00

119 lines
3.3 KiB
Python

"""
TTS 模块使用示例
演示如何使用 TTS 引擎和服务。
"""
import asyncio
from io import BytesIO
# 示例 1: 直接使用 Edge-TTS 引擎
async def example_direct_engine():
"""直接使用 EdgeTTSEngine"""
from tts.edge_tts_engine import EdgeTTSEngine
engine = EdgeTTSEngine()
print(f"Engine: {engine.get_engine_name()} v{engine.get_engine_version()}")
# 合成语音
text = "你好,我是语音合成助手。"
audio = await engine.synthesize(text, language="zh-CN")
print(f"Audio synthesized: {audio.getbuffer().nbytes} bytes")
# 获取支持的声音
voices = await engine.get_supported_voices("zh-CN")
print(f"Supported voices: {len(voices)} found")
for voice in voices[:3]:
print(f" - {voice['display_name']} ({voice['name']})")
# 示例 2: 使用工厂模式创建引擎
async def example_factory():
"""使用 TTSEngineFactory 创建引擎"""
from tts.factory import TTSEngineFactory
# 创建 Edge-TTS 引擎
engine = TTSEngineFactory.create("edge-tts")
print(f"\nUsing {engine.get_engine_name()} engine")
# 合成多种语言
texts = {
"zh-CN": "你好,世界!",
"en-US": "Hello, World!",
"ja-JP": "こんにちは、世界!",
}
for language, text in texts.items():
audio = await engine.synthesize(text, language=language)
print(f"Synthesized {language}: {audio.getbuffer().nbytes} bytes")
# 示例 3: 使用高级服务
async def example_service():
"""使用 TTSService 高级接口"""
from tts.service import TTSService
# 获取引擎信息
info = TTSService.get_engine_info()
print(f"\nTTS Service Info: {info}")
# 使用默认配置合成
text = "使用服务默认配置合成语音。"
audio = await TTSService.synthesize(text)
print(f"Synthesized with defaults: {audio.getbuffer().nbytes} bytes")
# 使用自定义参数合成
text = "这是一个更快的语音示例。"
audio = await TTSService.synthesize(text, rate=1.2)
print(f"Synthesized with rate=1.2: {audio.getbuffer().nbytes} bytes")
# 获取声音列表
voices = await TTSService.get_supported_voices()
print(f"Available voices: {len(voices)} found")
# 示例 4: 保存合成的音频到文件
async def example_save_audio():
"""合成语音并保存到文件"""
from tts.service import TTSService
text = "这是一个保存到文件的语音示例。"
audio = await TTSService.synthesize(text)
# 保存为 MP3 文件
output_file = "output_audio.mp3"
with open(output_file, "wb") as f:
f.write(audio.getvalue())
print(f"\nAudio saved to {output_file}")
async def main():
"""运行所有示例"""
print("=" * 50)
print("TTS Module Examples")
print("=" * 50)
try:
# print("\n1. Direct Engine Usage")
# print("-" * 50)
# await example_direct_engine()
# print("\n2. Factory Pattern")
# print("-" * 50)
# await example_factory()
# print("\n3. Service Interface")
# print("-" * 50)
# await example_service()
print("\n4. Save Audio to File")
print("-" * 50)
await example_save_audio()
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
asyncio.run(main())