音频转换为文本(Speech to text Beta)
学习如何将音频转换为文本
概览 (Introduction)
语音转文本API提供了两个端点——transcriptions
和translations
——基于我们最先进的开源large-v2 (Whisper模型) (opens in a new tab)。它们可以用于:
- 将音频转录为任何语言
- 将音频翻译并转录为英语。
文件上传目前仅限于25 MB,支持的输入文件类型包括:mp3
、mp4
、mpeg
、mpga
、m4a
、wav
和 webm
。
开始起步(Quickstart)
转录(Transcriptions)
转录API接受您要转录的音频文件以及所需的音频转录输出文件格式作为输入。我们目前支持多种输入和输出文件格式。
音频转录 Python 选择库 Python 代码样例
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
audio_file= open("/path/to/file/audio.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
默认情况下,响应类型将是包含原始文本的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
翻译(Translations)
API接收支持的任何语言的音频文件作为输入,并在必要时将音频转录为英语。这与我们的/转录端点(Completion)不同,因为输出不是在原始输入语言中,而是翻译为英文文本。
音频翻译 Python 选择库 Python 代码样例
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
audio_file= open("/path/to/file/german.mp3", "rb")
transcript = openai.Audio.translate("whisper-1", audio_file)
在此情况下,输入的音频是德语,输出的文本看起来像:
Hello, my name is Wolfgang and I come from Germany. Where are you heading
today?
我们目前仅支持英语翻译。
支持语言(Supported languages)
我们目前 (支持以下语言) (opens in a new tab) through both the transcriptions
and translations
endpoint:
南非荷兰语、阿拉伯语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、希伯来语、印地语、匈牙利语、冰岛语、印度尼西亚语、意大利语、日语、卡纳达语、哈萨克语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉地语、毛利语、尼泊尔语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰米尔语、泰语、土耳其语、乌克兰语、乌尔都语、越南语和威尔士语。
虽然底层模型是在98种语言上训练的,但我们只列出了超过50%的(词语错误率) (opens in a new tab)(WER)的语言,这是语音文本模型准确性的行业标准基准。
该模型将返回未列出的语言的结果,但质量将较低。
日志输入 (Longer inputs)
默认情况下,Whisper API仅支持小于25MB的文件。
如果您有一个超过25 MB的音频文件,您需要将其分成25 MB或更小的块,或使用压缩音频格式。
为了获取最佳性能,我们建议您避免在句子中间中断音频,因为这可能会导致一些上下文丢失。
处理此问题的一种方法是使用(PyDub开源Python软件包) (opens in a new tab)来拆分音频:
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的第三方软件的可用性或安全性提供任何保证。
提示(Prompting)
您可以使用Prompt(提示) (opens in a new tab)来提高Whisper API生成的转录质量。
该模型将尝试匹配提示的风格,因此如果提示使用了大写字母和标点符号,它也更有可能使用这些。
然而,当前的提示系统比我们的其他语言模型要受到限制,只能对生成的音频进行有限控制。
以下是Prompt(提示)在不同情况下如何帮助的一些示例:
- 提示可以帮助纠正模型在语音识别中常常误识别的特定单词或缩略语。例如,以下提示可以改善之前将词语DALL·E和GPT-3写成“GDP 3”和“DALI”的转录。
这篇转录是关于OpenAI的,它利用技术制造DALL·E、GPT-3和ChatGPT,并希望有一天建立一个造福全人类的AGI系统。
- 为了保留文件分割成段落的上下文,您可以提示模型使用先前段落的转录。
这将使转录更准确,因为模型将使用先前音频的相关信息。
模型只会考虑提示中最后224个标记,忽略之前的内容。
- 有时,模型可能会在转录中跳过标点符号。您可以通过使用包含标点符号的简单Prompt(提示)来避免这种情况:
您好,欢迎来到我的讲座。
- 模型还可能在音频中省略常见的填充词。如果您想在转录中保留填充词,可以使用包含它们的提示:
嗯,让我想想,嗯…… 好的,这是我在想的。
- 有些语言可以用不同的方式书写,例如简体或繁体中文。模型可能不会始终使用您想要的转录书写风格。您可以使用您偏好的书写风格提示来改善这一点。