文本转语音 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"
)

五、应用场景

📚 内容创作

  • ✅ 有声书制作
  • ✅ 播客配音
  • ✅ 视频旁白
  • ✅ 课程讲解

🤖 智能交互

  • ✅ 语音助手
  • ✅ 客服系统
  • ✅ 导航播报
  • ✅ 无障碍应用