文本转语音
学习如何将文本转换为类人的口头音频。
介绍
音频 API 提供了一个基于我们的 TTS(文本转换为语音)模型的 speech
端点。它具有 6 个内置的语音,可用于:
- 朗读书面的博客文章
- 生成多种语言的口头音频
- 使用流式传输实现实时的音频输出
以下是 alloy
语音的示例:
请注意,我们的使用策略要求您向最终用户明确表示,他们听到的 TTS 语音是由人工智能生成的,而不是人类的语音。
快速启动
speech
端点接受三个关键输入:模型、要转换为音频的文本,以及用于音频生成的语音。一个简单的请求如下所示:
from pathlib import Path
from openai import OpenAI
client = OpenAI()
speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Today is a wonderful day to build something people love!"
)
response.stream_to_file(speech_file_path)
默认情况下,端点将输出 MP3 文件的口头音频,但也可以配置为输出我们支持的任何格式。
音频质量
对于实时应用程序,标准 tts-1
模型提供了最低的延迟,但比 tts-1-hd
模型的质量较低。由于音频的生成方式,tts-1
在某些情况下可能会生成更多噪音的内容。在某些情况下,音频可能没有明显的差异,这取决于您的听觉设备和个人的听觉能力。
语音选项
尝试不同的语音(alloy
,echo
,fable
,onyx
,nova
和 shimmer
),以找到符合您想要的音调和听众的语音。当前的语音已针对英语进行了优化。
合金
回声
寓言
缟玛瑙
新星
闪光
支持的输出格式
默认的响应格式是 "mp3",但也支持其他格式,如 "opus"、"aac"、"flac" 和 "pcm"。
支持的语言
TTS 模型通常遵循 Whisper 模型的语言支持。Whisper 支持以下语言,并且在当前的语音已经针对英语进行了优化之际,也表现得很好:
阿富汗语,阿拉伯语,亚美尼亚语,阿塞拜疆语,波斯尼亚语,保加利亚语,加泰罗尼亚语,中文,克罗地亚语,捷克语,丹麦语,荷兰语,英语,爱沙尼亚语,芬兰语,法语,加利西亚语,德语,希腊语,俾路支语,匈牙利语,冰岛语,印尼语,意大利语,日本语,卡纳达语,哈萨克语,韩国语,拉脱维亚语,立陶宛语,马其顿语,马来语,马拉地语,毛利语,尼泊尔语,挪威语,波斯语,波兰语,葡萄牙语,罗马尼亚语,俄罗斯语,塞尔维亚语,斯洛伐克语,斯洛文尼亚语,西班牙语,斯瓦希里语,瑞典语,塔加逻语,塔米尔语,泰语,土耳其语,乌克兰语,乌尔都语,越南语和威尔士语。
您可以通过在所需语言中提供输入文本来生成口头音频。
流媒体实时音频
语音 API 提供了对实时音频流的支持,使用了分块传输编码。这意味着音频可以在生成并使其可访问之前进行播放。
from openai import OpenAI
client = OpenAI()
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Hello world! This is a streaming test."
)
response.stream_to_file("output.mp3")
常见问题解答
我如何控制生成的音频的情感范围?
没有直接的机制来控制生成的音频的情感表达。某些因素(如大写字母或语法)可能会影响音频的输出,但我们的内部测试表明这些因素的效果不一。
我可以为自己的声音创建自定义副本吗?
不,我们不支持这个功能。
我拥有输出的音频文件吗?
是的,就像我们的 API 的所有输出一样,创建它们的人拥有输出。您仍然有责任向最终用户通知,他们听到的是由人工智能生成的音频,而不是人类的语音。