文本转语音 TTS API 教程
高质量语音合成,支持多语言、多音色,打造自然流畅的语音体验
6种音色
自然人声选择
语速调节
0.25-4.0倍速
流式播放
实时语音输出
HD音质
高保真输出
一、基础语音合成
快速开始
import openai
from pathlib import Path
client = openai.OpenAI(
api_key="your-api-key",
base_url="https://api.n1n.ai/v1"
)
# 基础文本转语音
response = client.audio.speech.create(
model="tts-1",
voice="alloy", # 可选: alloy, echo, fable, onyx, nova, shimmer
input="欢迎使用N1N的文本转语音API,支持多种声音和语言。"
)
# 保存音频文件
response.stream_to_file("output.mp3")
# 高质量版本
response_hd = client.audio.speech.create(
model="tts-1-hd", # 高清版本,质量更好但延迟稍高
voice="nova",
speed=1.0, # 语速调节 0.25-4.0
input="这是高质量的语音合成效果。"
)
response_hd.stream_to_file("output_hd.mp3")二、音色选择指南
Alloy
中性、平衡的声音
适合:通用场景、新闻播报
Echo
男性、深沉有力
适合:严肃内容、教学视频
Fable
英式口音、优雅
适合:有声书、故事讲述
Onyx
男性、低沉磁性
适合:播客、纪录片
Nova
女性、清晰友好
适合:客服、导航系统
Shimmer
女性、温暖亲切
适合:儿童内容、助手
三、流式语音播放
实时播放
import openai
import pygame
import io
# 流式播放音频
def stream_and_play_audio(text: str, voice: str = "alloy"):
response = client.audio.speech.create(
model="tts-1",
voice=voice,
input=text,
response_format="mp3"
)
# 初始化pygame
pygame.mixer.init()
# 将响应流转换为字节流
audio_stream = io.BytesIO(response.content)
# 加载并播放
pygame.mixer.music.load(audio_stream)
pygame.mixer.music.play()
# 等待播放完成
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
# 实时对话系统
class VoiceAssistant:
def __init__(self):
self.voice = "nova"
self.speed = 1.0
async def speak(self, text: str):
"""异步语音输出"""
response = await client.audio.speech.create(
model="tts-1",
voice=self.voice,
speed=self.speed,
input=text
)
# 流式播放
await self.play_audio_stream(response)
async def play_audio_stream(self, audio_data):
# 实现流式音频播放逻辑
pass
# Node.js 流式实现
const stream = await openai.audio.speech.create({
model: "tts-1",
voice: "alloy",
input: text,
stream: true
});
// 管道到音频播放器
stream.pipe(audioPlayer);四、多语言支持
国际化应用
# 多语言支持
languages = {
"english": "Hello, this is English text to speech.",
"chinese": "你好,这是中文语音合成。",
"japanese": "こんにちは、これは日本語の音声合成です。",
"korean": "안녕하세요, 이것은 한국어 음성 합성입니다.",
"spanish": "Hola, esta es la síntesis de voz en español.",
"french": "Bonjour, ceci est la synthèse vocale française.",
"german": "Hallo, das ist deutsche Sprachsynthese.",
"russian": "Привет, это русский синтез речи."
}
# 批量生成多语言音频
for lang, text in languages.items():
response = client.audio.speech.create(
model="tts-1-hd",
voice="nova", # Nova 声音对多语言支持较好
input=text
)
response.stream_to_file(f"output_{lang}.mp3")
print(f"生成 {lang} 音频完成")
# SSML 格式支持(高级功能)
ssml_text = """
<speak>
<prosody rate="slow">这部分说得慢一些。</prosody>
<break time="500ms"/>
<prosody pitch="+2st">这部分音调高一些。</prosody>
<emphasis level="strong">这是重点内容!</emphasis>
</speak>
"""
response = client.audio.speech.create(
model="tts-1-hd",
voice="alloy",
input=ssml_text,
response_format="mp3"
)五、应用场景
📚 内容创作
- ✅ 有声书制作
- ✅ 播客配音
- ✅ 视频旁白
- ✅ 课程讲解
🤖 智能交互
- ✅ 语音助手
- ✅ 客服系统
- ✅ 导航播报
- ✅ 无障碍应用