本文将学习如何通过 OpenAI Audio API 将音频转换成文本。
介绍
语音转文本 API 提供了两个端点,分别是转录和翻译,基于我们最先进的开源 large-v2 Whisper 模型。它们可以用于:
- 将音频转录成所处语言。
- 将音频翻译成英语并转录。
文件上传目前限制为 25 MB,支持的输入文件类型有:mp3、mp4、mpeg、mpga、m4a、wav 和 webm。
快速入门
转录
转录 API 接受你想要转录的音频文件和所需的音频转录输出文件格式作为输入。我们目前支持多种输入和输出文件格式。
curl --request POST \
--url https://api.openai.com/v1/audio/transcriptions \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: multipart/form-data' \
--form file=@/path/to/file/openai.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.
....
}
要在请求中设置其他参数,你可以添加更多带有相关选项的 --form
行。例如,如果你想将输出格式设置为文本,则可以添加以下行:
...
--form file=@openai.mp3 \
--form model=whisper-1 \
--form response_format=text
翻译
翻译 API 接受支持的任何语言中的音频文件,并在必要时将音频转录成英文。这与我们的转录端点不同,因为输出不是原始输入语言,而是翻译为英文文本。
curl --request POST \
--url https://api.openai.com/v1/audio/translations
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: multipart/form-data' \
--form file=@/path/to/file/german.mp3 \
--form model=whisper-1
在这种情况下,输入的音频是德语,输出的文本如下:
Hello, my name is Wolfgang and I come from Germany. Where are you heading today?
目前我们仅支持翻译成英语。
支持的语言
我们目前通过转录和翻译端点支持以下语言:
南非荷兰语、阿拉伯语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、希伯来语、印地语、匈牙利语、冰岛语、印度尼西亚语、意大利语、日语、卡纳达语、哈萨克语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉地语、毛利语、尼泊尔语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰米尔语、泰语、土耳其语、乌克兰语、乌尔都语、越南语和威尔士语。
虽然底层模型是在 98 种语言上进行训练的,但我们仅列出了错误率(WER)超过<50% 的语言,这是语音转文本模型准确性的行业标准基准。模型将为未列出的语言返回结果,但质量会较低。
更长的输入
默认情况下,Whisper API 仅支持小于25 MB的文件。如果你有超过 25 MB 的音频文件,则需要将其拆分为25 MB 或更小的块,或使用压缩音频格式。为获得最佳性能,我们建议你避免在句子中间分割音频,因为这可能会导致某些上下文丢失。
处理此问题的一种方法是使用PyDub开源Python包来拆分音频:
from pydub import AudioSegment
song = AudioSegment.from_mp3("good_morning.mp3")
# PyDub handles time in milliseconds
ten_minutes = 10 * 60 * 1000
first_10_minutes = song[:ten_minutes]
first_10_minutes.export("good_morning_10.mp3", format="mp3")
OpenAI 不保证 PyDub 等第三方软件的可用性或安全性。
提示
你可以使用提示来提高 Whisper API 生成的转录质量。模型将尝试匹配提示的风格,因此如果提示也使用大写字母和标点符号,它将更有可能使用它们。然而,当前的提示系统比我们的其他语言模型要受限得多,并且仅提供对生成的音频的有限控制。以下是提示在不同场景下如何帮助你的一些示例:
- 提示可以非常有帮助,用于纠正模型在音频中经常无法正确识别的特定单词或缩写词。例如,下面的提示可以改善“DALL·E”和“GPT-3”的转录,这些词以前被写作“GDP 3”和“DALI”。
这个记录是关于 OpenAI 的,他们使用像 DALL·E、GPT-3 和 ChatGPT 这样的技术,希望有朝一日构建一个造福全人类的 AGI 系统。
- 为了保留被分成段的文件的上下文,你可以使用前一个部分的转录提示模型。这将使转录更加准确,因为模型将使用前一个音频的相关信息。模型只会考虑提示的最后 224 个标记,并忽略之前的任何内容。
- 有时,模型可能会在转录中跳过标点符号。你可以使用包含标点符号的简单提示来避免这种情况:
你好,欢迎来到我的讲座。
- 模型还可能会在音频中留下常见的填充词。如果你想在转录中保留填充词,可以使用包含这些词的提示:
嗯,让我想想,嗯……好的,这是我在想什么。
- 一些语言可以用不同的方式书写,例如简体或繁体中文。模型可能并不总是使用你想要的书写风格来进行转录。你可以使用你偏爱的书写风格的提示来改进此问题。
API
创建转录
POST https://api.openai.com/v1/audio/transcriptions
将音频转录为输入语言。
请求体
- file string 必填
要转录的音频文件,格式为:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。
- model string 必填
要使用的模型 ID。目前仅有whisper-1
可用。 - prompt string 可选
可选的文本,用于指导模型的风格或延续之前的音频片段。提示语应与音频语言相匹配。 - response_format string 可选 默认为
json
转录输出的格式,可选项为:json、text、srt、verbose_json 或 vtt。 - temperature number 可选 默认为
0
采样温度,介于 0 和 1 之间。较高的值如 0.8 会使输出更加随机,而较低的值如 0.2 会使其更加专注和确定性。如果设置为 0,则模型将使用对数概率自动增加温度,直到达到某些阈值。 - language string 可选
输入音频的语言。以 ISO-639-1 格式提供输入语言将提高准确性和延迟。
创建翻译
POST https://api.openai.com/v1/audio/translations
将音频翻译成英语。
请求体
- prompt 字符串 可选
一个可选的文本,用于指导模型的风格或继续之前的音频片段。该提示应该是英文的。 - language:不支持
- 其他参数用法同上
评论 (0)