1. 语音模型概览
1.1. OpenAI的TTS和STT模型介绍
TTS(文本转语音)模型
OpenAI提供的TTS模型能够将文本资料转换为语音输出。这个过程涵盖了文本的分析、语音合成算法的应用,以及音质调整等步骤。它使计算机可以读出任何书面文本,使内容更加易于理解和接受。对于视障人士、驾驶员或仅仅是希望通过听的方式接收信息的人来说,TTS是一项重要技术。
STT(语音转文本)模型
与TTS相对应,STT模型可以将语音信息转换为书面文本。在处理原始音频输入时,STT系统需先执行语音检测,然后是特征提取,之后利用声学模型和语言模型将音频信号映射到词汇上,最终生成文本输出。STT技术广泛应用于语音识别、会议记录、实时字幕生成等场景。
1.2. 应用场景案例
- 博客朗读
- 多语种语音生成
3. 文本转语音API
3.1. 快速开始
在本节中,我们将通过curl命令和Python客户端演示如何将文本快速转换为语音。无论是开发者还是非技术用户,只需简单地发送API请求,即可轻松生成语音文件。
使用curl发送请求
要使用curl命令行工具生成语音,你需要按照如下步骤进行:
- 确保你的系统已安装curl,并且你已经拥有有效的OpenAI API密钥。
- 使用下面的curl命令,将文本转换为语音:
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "今天是个搭建人们喜爱产品的绝佳日子!",
"voice": "alloy"
}' \
--output speech.mp3
在上述命令中,$OPENAI_API_KEY
是你的API密钥,input
字段是你想要转换的文本,model
字段指定了使用的声音模型, voice
参数是声线选择,这里选择alloy
金属合成音。最后的--output
选项指定了输出文件的名称与格式。
使用Python客户端
如果你更喜欢使用Python编程语言,可以使用如下代码示例:
from openai import OpenAI
client = OpenAI()
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="今天是个搭建人们喜爱产品的绝佳日子!"
)
response.stream_to_file("output.mp3")
在这段代码中,我们首先导入openai
库并创建一个OpenAI客户端实例。然后,我们利用audio.speech.create
方法发送请求,指定模型、声音和要转换的文本。最后,使用stream_to_file
方法将生成的语音流保存到文件中。
3.2. 选择音质和声音
选择适合您项目的音质和声音是确保最佳用户体验的关键步骤。我们的API提供了两种音质模型选项:tts-1
和tts-1-hd
。
tts-1
: 提供更低的延迟,适合实时应用,但音质相对较低。tts-1-hd
: 提供更高质量的音频输出,适合非实时的高质量语音生成需求。
此外,OpenAI的TTS API提供了不同的声线选项:
- Alloy
- Echo
- Fable
- Onyx
- Nova
- Shimmer
根据项目需求和目标受众,你可以测试不同的语音样本以选择最匹配的声音。考虑到口语风格、语速和音调等因素,尝试找到能够传达适当情感和专业度的声音。
3.3. 支持的输出格式与语言
OpenAI提供的TTS API默认输出格式为MP3,但还支持其他多种音频格式,包括:
- Opus: 适合互联网流媒体和通信,低延迟。
- AAC: 用于数字音频压缩,受YouTube、Android、iOS等偏好。
- FLAC: 无损音频压缩格式,音频爱好者用于归档。
在多语言支持方面,API主要跟随Whisper模型,提供丰富的语言选项,支持很多国家语言。
3.4. 实时音频流功能
为了满足实时应用的需求,我们的API提供了实时音频流支持。以下是一个用于实现实时音频流的Python示例:
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")
4. 语音转文本API
4.1. 快速开始
在这一节中,我们主要介绍OpenAI提供的API进行语音转文本的功能。
首先,您需要有一个有效的OpenAI API密钥,然后准备一个音频文件。
下面使用curl
命令来发送一个包含音频文件的POST请求。您需要替换OPENAI_API_KEY
为您的API密钥,同时设置正确的文件路径。
curl --request POST \
--url https://api.openai.com/v1/audio/transcriptions \
--header 'Authorization: Bearer OPENAI_API_KEY' \
--header 'Content-Type: multipart/form-data' \
--form file=@/path/to/your/audio/file.mp3 \
--form model=whisper-1
执行上述命令后,您将收到一个JSON格式的响应,包含转换后的文本信息。
例如:
{
"text": "Imagine the wildest idea that you've ever had, and you're curious about how it might scale to something that's a 100, a 1,000 times bigger.
....
}
4.2. 支持的文件格式和大小
此API支持各种常见的音频文件格式,以满足不同场景下的需求。支持的文件格式包括但不限于mp3
, mp4
, mpeg
, mpga
, m4a
, wav
, webm
等。这样,用户可以方便地处理多种来源的音频文件。
对于文件大小,当前API的限制是最大不超过25MB。这意味着,如果您的音频文件大于25MB,您需要将其分割为多个小于25MB的文件段,或使用更高效的压缩格式。例如,mp3
和opus
通常提供高效的压缩,从而在不牺牲太多音质的情况下减少文件的大小。
如果碰到大于25MB的文件,可以考虑使用Python中的PyDub
库来分割您的音频:
from pydub import AudioSegment
audio_file = AudioSegment.from_file("your_large_audio_file.mp3")
# PyDub handles time in milliseconds
# 设定分割的时间间隔
interval = 10 * 60 * 1000 # 10分钟
chunks = make_chunks(audio_file, interval)
for i, chunk in enumerate(chunks):
chunk_name = f"audio_chunk{i}.mp3"
chunk.export(chunk_name, format="mp3")
在上述代码中,make_chunks
函数将会把一个大的音频文件分割为多个时间间隔为10分钟的音频片段。这些片段均不超过接口要求的文件大小限制,可以单独上传至OpenAI API进行转录。
请注意,虽然PyDub
为我们提供一个易于处理音频文件的途径,但还是推荐您在使用任何第三方软件时格外注意其安全性和稳定性。OpenAI并不对第三方软件提供任何保证。