Mindket

AI 文字转语音:怎样做出听起来自然的声音

黑色横幅,标题是“AI 语音与音乐”,下面是“语音合成、声音克隆、歌曲与配音”。

文字转语音,就是把书面文字读成语音。OpenAI 的语音接口需要模型、文字和音色,还有一个 instructions 字段,用来设定语气、语速和口音。Kokoro 这样的开源模型可以在自己的电脑上运行。听起来自然,靠的是挑对音色、写清楚指令,再检查人名和数字是怎么读的。

本节内容

  • 向语音接口发一次请求,把返回的内容存成音频文件。
  • 写一段短指令,设定语气、语速和口音,每次只改一处。
  • 把人名、缩写和编号按应该读的样子写出来。
  • 按用途选路线:托管的 API,或者本机运行的模型。
  • 声音由 AI 生成时,要告诉听众。
全部课程
本页目录
  1. 开始之前
  2. 用 OpenAI 的语音接口生成语音文件
  3. 给声音下指令:语气、语速、口音和读音
  4. 看 OpenAI 介绍语音模型
  5. 在自己的电脑上运行开源模型:Kokoro
  6. 哪条路线适合你的任务
  7. 决定你该用什么的几个日期
  8. 常见错误
  9. 动手试试
  10. 下一课:声音克隆
  11. 自测一下
  12. 常见问题
  13. 资料来源

开始之前

文字转语音(TTS)指程序用合成的声音把书面文字念出来。这一课走两条路线。第一条调用 OpenAI 的语音接口,需要一个 API 密钥和装有 curl 的终端,怎样拿到密钥可以看 OpenAI API 入门。第二条路线用 Python 在自己的电脑上运行 Kokoro,一个小型开源模型。

第一条路线有个日期要先知道。OpenAI 的指南把 tts-1、tts-1-hd 和 gpt-4o-mini-tts 标为已弃用,将在 2027 年 1 月 6 日关停,新项目请改用 Realtime API 里的 gpt-realtime-2.1-mini。那是另一套工作流程,页面写明这个模型不支持 /v1/audio/speech。关停之前,语音接口的示例照常能用,而且它们讲的是各条路线都一样的东西:音色、指令和输出格式。

OpenAI 的使用政策还要求你告诉听众,这个声音是 AI 生成的,不是真人。现在就想好那句口播或者字幕怎么写,事后补很容易忘。

用 OpenAI 的语音接口生成语音文件

请求有三个必填部分,模型、文字和音色,外加一个这里很重要的可选部分 instructions。下面的命令来自 OpenAI 的指南,它发送一句话和一小段指令,把返回的音频写进 speech.mp3。

curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini-tts",
    "input": "Today is a wonderful day to build something people love!",
    "voice": "coral",
    "instructions": "Speak in a cheerful and positive tone."
  }' \
  --output speech.mp3
  1. 把 API 密钥放进 OPENAI_API_KEY 环境变量。
  2. 在终端里运行上面的命令。指南里的 Python、JavaScript、Go、Java、C# 和 Ruby 标签页,发送的是同样四个字段。
  3. 打开 speech.mp3 听一听。默认格式是 MP3。
  4. 把 voice 改成 marin 或 cedar。指南的音色清单列出 13 个内置音色(它的开头一段写的是 11 个),并推荐这两个,称音质最好。
  5. 把音频直接送到扬声器时,用 response_format 要 wav 或 pcm。指南推荐它们,因为响应最快,并说明 pcm 是没有文件头的原始 24 kHz、16 位采样。
  6. 每次只改一个字段再运行一遍。一次只改一处,才看得出是哪个字段起了作用。
取自 OpenAI 的文字转语音指南,2026 年 11 月 6 日阅读。
输出格式指南说它适合
MP3一般用途,也是默认格式
Opus互联网流媒体和通信,延迟低
AAC数字音频压缩,YouTube、Android 和 iOS 偏好
FLAC无损压缩,适合存档
WAV未压缩音频,适合不想花时间解码的低延迟场景
PCM没有文件头的原始 24 kHz、16 位采样

给声音下指令:语气、语速、口音和读音

instructions 字段接受普通的话。OpenAI 的指南说它能控制口音、情绪幅度、语调、模仿、语速、语气和耳语,示例只给了一行。更长的指令可以看 OpenAI 讲 Realtime 语音模型提示词的那篇指南,它把指令写成几个带标签的小段。那些写法是为 Realtime 模型写的,所以当作措辞参考,不要当成语音接口一定有效的保证。

下面的文字块,把那篇指南里三个分开的示例合成了一份指令,并去掉了它的 Length 一行,因为那一行说的是对话里每一轮的长度。指南说读音清单要保持简短,听到哪个词读错了,再加哪个词。

# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Pacing
- Deliver your audio response fast, but do not sound rushed.
- Do not modify the content of your response, only increase speaking speed for the same response.

# Reference Pronunciations
When voicing these words, use the respective pronunciations:
- Pronounce “SQL” as “sequel.”
- Pronounce “PostgreSQL” as “post-gress.”
- Pronounce “Kyiv” as “KEE-iv.”
- Pronounce "Huawei" as “HWAH-way”
  • 语速。 在 Realtime API 里,speed 设置改的是播放速度,不是模型组织语音的方式。想让声音更快,指南的做法是像上面那样加一条语速指令。
  • 口音。 指南说,“Sound Australian.” 这样含糊的一句,可能会漂移,甚至切换语言。它把口音写成几个稳定的特征:说带一点澳大利亚口音的英语,从第一个词到最后一个词保持稳定,不要夸张。
  • 编号和数字。 对电话号码、订单号和各种代码,指南加的规则是:每个字符单独读,用连字符隔开(比如 4-1-5),并且原样重复这个号码。
  • 指令的局限。 指南说,提示词能调口音、语速和表达方式,但替代不了声音设计。需要品牌专属的声音,就要用自定义声音,这是下一课的内容。
  • 重复。 示例短语容易被用得太多。加一条变化规则(“Do not repeat the same sentence twice”),长篇朗读才不会像机器人。
取自 OpenAI 的文字转语音指南,以及它讲 Realtime 模型提示词的指南,2026 年 11 月 6 日阅读。
听起来不对劲该改什么
平淡、一个调子在 instructions 里加语气和情绪的词,比如“cheerful and positive”
太慢或太快用文字说明语速,因为 speed 设置在 Realtime API 里只改播放速度
人名或缩写读错写出该怎么读:把 “SQL” 读成 “sequel”
数字糊成一团要求每次读一个字符,用连字符隔开
口音飘忽写明口音,说清哪些要保持稳定,并说明不要夸张
同一句话反复出现加一条变化规则

看 OpenAI 介绍语音模型

2025 年 3 月 20 日,OpenAI 的四位成员介绍了 API 里的三个音频模型,其中一个就是支撑 instructions 字段的文字转语音模型,并做了演示。语音指南现在把这个模型列为已弃用,所以视频只用来理解怎样给声音下指令,当前的日期以指南为准。

OpenAI 在自己的频道介绍并演示 API 里的三个新音频模型,直播于 2025 年 3 月 20 日。

在自己的电脑上运行开源模型:Kokoro

Kokoro 是一个开放权重的模型,只有 8200 万参数,结构轻量。它的权重采用 Apache 许可,所以可以放进产品里。模型卡说,它只用允许使用的或不受版权保护的音频训练:公有领域的录音、Apache 或 MIT 等许可下的音频,以及闭源 TTS 模型生成的合成音频。README 里的示例都是选一个有名字的音色,比如 af_heart,没有出现参考录音。1.0 版发布于 2025 年 1 月 27 日,带有 54 个音色,覆盖 8 种语言。

安装包叫 kokoro,还需要 espeak-ng。README 用这个语音工具处理英文词典之外的词和另外几种语言。下面是 README 里那段代码的精简版,每段文字生成一个 24000 Hz 的 WAV 文件。

pip install -q "kokoro>=0.9.4" soundfile
# espeak-ng: on Linux  apt-get -qq -y install espeak-ng
#            on Windows  run the .msi from the espeak-ng releases page

from kokoro import KPipeline
import soundfile as sf

pipeline = KPipeline(lang_code='a')   # 'a' => American English
text = '''Kokoro is an open-weight TTS model with 82 million parameters.'''
generator = pipeline(text, voice='af_heart')
for i, (gs, ps, audio) in enumerate(generator):
    print(i, gs, ps)
    sf.write(f'{i}.wav', audio, 24000)
  • lang_code 决定语言,必须和音色匹配:a 美式英语,b 英式英语,e 西班牙语,f 法语,h 印地语,i 意大利语,j 日语,p 巴西葡萄牙语,z 普通话。
  • 日语需要 pip install misaki[ja],普通话需要 pip install misaki[zh]。
  • 在苹果芯片的 Mac 上,README 设置 PYTORCH_ENABLE_MPS_FALLBACK=1 来启用 GPU 加速。
  • 模型卡链接了完整的音色清单(VOICES.md)和音频样例(SAMPLES.md)。
  • 模型卡提醒,域名里带 kokoro 的网站,比如 kokorottsai_com,和这个模型没有关系,很可能是骗局。

哪条路线适合你的任务

托管的 API 让你用文字下指令,给你一个现成的声音。Kokoro 每个文件不花钱,文字也留在你自己的机器上,不过音色只能从它自带的里面选。Chatterbox 接受一段参考录音,还有表现力控制,但它的状态有个麻烦。想看 OpenAI 之外的托管工具,AI 配音工具课做了对比。

把文字变成语音的三种方式
OpenAI 语音接口Kokoro-82MChatterbox
在自己的电脑上运行否是是
用文字设定语气和语速是README 里没有出现部分
用一段录音克隆声音部分README 里没有出现是
语言跟随 Whisper 的语言清单,音色针对英语优化8 种语言,54 个音色Multilingual V3 支持 23 种以上,Turbo 和 Nano 只有英语
许可或条款OpenAI 使用政策Apache-2.0MIT
2026 年 11 月 6 日的状态语音模型 2027 年 1 月 6 日关停1.0 版发布于 2025 年 1 月2026 年 8 月退役,作为存档保留

来源:OpenAI API docs: Text to speech (2026年11月6日 查阅);Hugging Face: hexgrad/Kokoro-82M model card (2026年11月6日 查阅);GitHub: resemble-ai/chatterbox README (2026年11月6日 查阅);Hugging Face: ResembleAI/chatterbox model card (2026年11月6日 查阅)

决定你该用什么的几个日期

四个日期都来自厂商自己的页面。转写模型的关停日期,在配音那一课里还会用到,因为配音从语音开始,又在语音结束。

  1. Kokoro 1.0 版发布

    8 种语言共 54 个音色,权重采用 Apache 许可。

    来源:Hugging Face: hexgrad/Kokoro-82M model card (2026年11月6日 查阅)

  2. Chatterbox 退役

    仓库作为存档继续公开,采用 MIT 许可,不再提供支持和更新。

    来源:GitHub: resemble-ai/chatterbox README (2026年11月6日 查阅)

  3. OpenAI 语音模型关停

    tts-1、tts-1-hd 和 gpt-4o-mini-tts 停止工作,请迁移到 Realtime API。

    来源:OpenAI API docs: Text to speech (2026年11月6日 查阅)

  4. OpenAI 转写模型关停

    whisper-1、gpt-4o-transcribe 系列模型和 /v1/audio/translations 停止工作。

    来源:OpenAI API docs: File transcription (2026年11月6日 查阅)

常见错误

  • 新产品直接建在 gpt-4o-mini-tts 上,却没有应对它关停日期的计划。
  • 只写“要澳大利亚口音”,不说哪些要保持稳定,结果听到口音飘忽。
  • 用 speed 设置去改一句话的表达方式,而它在 Realtime API 里只改播放速度。
  • 让电话号码或订单号连成一串,而不是要求每次读一个字符。
  • Kokoro 的 lang_code 和音色不匹配,或者漏装了 espeak-ng。
  • 把读音堆成一长串清单,而指南说要保持简短,听到读错再加。
  • 漏掉告诉听众这是 AI 生成声音的那一句。

动手试试

  • 用上面的请求生成 speech.mp3,再只把 voice 改成 marin,对比两个文件。
  • 给自己写的一段文字配一份指令,包含一条语速和一个人名的读音,再检查这个名字读对了没有。
  • 把一个编造的订单号读两遍,一遍不加规则,一遍用连字符规则,听听有什么不同。
  • 运行 Kokoro 那段代码,再把 lang_code 和 voice 一起换成 README 列出的另一种语言。

下一课:声音克隆

选一个内置音色是一回事,做出一个像某个具体的人的声音是另一回事,后者还有同意方面的规则。声音克隆讲它的原理、OpenAI 和开源模型对你的要求,以及克隆之前该检查什么。

自测一下

  1. OpenAI 语音请求里的哪个字段,用普通的话设定语气、语速和口音?

    查看答案

    C. instructions 指南说 instructions 能控制口音、情绪幅度、语调、语速、语气和耳语。其他字段分别设置文字、音色和文件格式。

  2. 指南说 tts-1、tts-1-hd 和 gpt-4o-mini-tts 什么时候关停?

    查看答案

    B. 2027 年 1 月 6 日 指南把这三个模型标为已弃用,关停日期是 2027 年 1 月 6 日。2027 年 2 月 26 日是转写模型的日期。

  3. 下面哪一项是 Kokoro 模型卡里写明的?

    查看答案

    D. 它有 8200 万参数,权重采用 Apache 许可 模型卡称 Kokoro 是开放权重的模型,有 8200 万参数,权重采用 Apache 许可。1.0 版列出 8 种语言共 54 个音色,pip 包可以在你自己的电脑上运行。

  4. 一个电话号码被读成一团糊在一起的数字。OpenAI 的 Realtime 提示词指南建议怎么办?

    查看答案

    A. 要求每次读一个字符,用连字符隔开 指南加了一条规则:每个字符单独读,用连字符隔开,并原样重复这个号码。

常见问题

语音接口能边生成边播放吗?

可以。指南说,这个接口用分块传输编码来流式输出音频,所以整个文件还没生成完,就可以开始播放。想要最快的起播,它推荐用 wav 或 pcm 格式。

有没有能离线运行的免费 AI 文字转语音?

Kokoro 就是一个。它用 pip 和 espeak-ng 安装,在你自己的电脑上运行,有 54 个音色可选。模型卡说它的权重采用 Apache 许可,README 里的示例是选一个有名字的音色。

一定要说明声音是 AI 生成的吗?

对 OpenAI 的声音来说,是的,因为它的使用政策要求向听众清楚说明。最简单的位置,是在说明文字或简介里写一句。其他工具有各自的条款,要逐个去读。

OpenAI 的文字转语音能说哪些语言?

指南说,这个模型大体跟随 Whisper 的语言清单,其中有中文、西班牙语、法语、印地语和马来语,音色则针对英语优化。输入文字用你想要的语言写就行。

怎样让文字转语音听起来不那么像机器人?

用文字去指挥它:语气和语速、稳定的口音、一份简短的读音清单,以及对代码每次读一个字符。每次只改一处,一次改好几处,就看不出是哪一处起了作用。

资料来源

  1. OpenAI API docs: Text to speech (2026年11月6日 查阅)https://developers.openai.com/api/docs/guides/text-to-speech
  2. OpenAI API docs: Prompting Realtime models (2026年11月6日 查阅)https://developers.openai.com/api/docs/guides/voice-prompting
  3. OpenAI API docs: File transcription (2026年11月6日 查阅)https://developers.openai.com/api/docs/guides/speech-to-text
  4. Hugging Face: hexgrad/Kokoro-82M model card (2026年11月6日 查阅)https://huggingface.co/hexgrad/Kokoro-82M
  5. GitHub: hexgrad/kokoro README (2026年11月6日 查阅)https://github.com/hexgrad/kokoro
  6. GitHub: resemble-ai/chatterbox README (2026年11月6日 查阅)https://github.com/resemble-ai/chatterbox
  7. Hugging Face: ResembleAI/chatterbox model card (2026年11月6日 查阅)https://huggingface.co/ResembleAI/chatterbox
  8. YouTube: OpenAI, Audio Models in the API (2026年11月6日 查阅)https://www.youtube.com/watch?v=lXb0L16ISAc

分享本节课

挑对语音工具

托管的语音平台,免费额度、限制,以及克隆声音之前要你做什么,各不相同。Mindket 把它们放在一起做了对比。

对比语音工具

本节课的 Markdown 版本 · AI 语音与音乐:语音合成、声音克隆与歌曲 · 全部课程