了解如何将音频转换为文本

介绍

语音转文本 API 提供两个端点,transcriptions以及translations,基于我们最先进的开源大型 v2 Whisper 模型。它们可用于:
  • 将音频转录成音频所使用的任何语言。
  • 将音频翻译并转录成英文。
文件上传目前限制为 25 MB,并且支持以下输入文件类型:<font style="color:rgb(53, 55, 64);">mp3</font><font style="color:rgb(53, 55, 64);">mp4</font><font style="color:rgb(53, 55, 64);">mpeg</font><font style="color:rgb(53, 55, 64);">mpga</font><font style="color:rgb(53, 55, 64);">m4a</font><font style="color:rgb(53, 55, 64);">wav</font><font style="color:rgb(53, 55, 64);">webm</font> # 快速开始 ## 转录 转录 API 将您要转录的音频文件和音频转录所需的输出文件格式作为输入。我们目前支持多种输入和输出文件格式。
  1. curl --request POST \
  2. --url https://api.openai.com/v1/audio/transcriptions \
  3. --header 'Authorization: Bearer TOKEN' \
  4. --header 'Content-Type: multipart/form-data' \
  5. --form file=@/path/to/file/openai.mp3 \
  6. --form model=whisper-1
  1. # Note: you need to be using OpenAI Python v0.27.0 for the code below to work
  2. import openai
  3. audio_file= open("/path/to/file/audio.mp3", "rb")
  4. transcript = openai.Audio.transcribe("whisper-1", audio_file)
默认情况下,响应类型将是包含原始文本的 json。

:::tips { “text”: “想象一下你曾经有过的最疯狂的想法,你很好奇它如何扩展到 100 倍、1000 倍大的东西。….}

:::

要在请求中设置其他参数,您可以—form使用相关选项添加更多行。例如,如果要将输出格式设置为文本,则可以添加以下行:
  1. ...
  2. --form file=@openai.mp3 \
  3. --form model=whisper-1 \
  4. --form response_format=text

翻译

翻译 API 将任何受支持语言的音频文件作为输入,并在必要时将音频转录为英语。这与我们的 /Transcriptions 端点不同,因为输出不是原始输入语言,而是翻译成英文文本。
  1. 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
  1. # Note: you need to be using OpenAI Python v0.27.0 for the code below to work
  2. import openai
  3. audio_file= open("/path/to/file/german.mp3", "rb")
  4. transcript = openai.Audio.translate("whisper-1", audio_file)
在这种情况下,输入的音频是德语,输出的文本如下所示:

:::tips 大家好,我叫沃尔夫冈,来自德国。你今天要去哪里?

:::

我们目前只支持翻译成英文。

支持的语言

我们目前通过和端点支持以下语言<font style="color:rgb(53, 55, 64);">transcriptions</font>``<font style="color:rgb(53, 55, 64);">translations</font> 南非荷兰语、阿拉伯语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、希伯来语、印地语、匈牙利语、冰岛语、印度尼西亚语、意大利语、日语、卡纳达语、哈萨克语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉地语、毛利语、尼泊尔语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰米尔语、泰语、土耳其语、乌克兰语、乌尔都语、越南语和威尔士语。

虽然底层模型是针对 98 种语言进行训练的,但我们只列出了超过 <50%单词错误率(WER)的语言,这是语音到文本模型准确性的行业标准基准。该模型将返回上面未列出的语言的结果,但质量会很低。

更长的输入

默认情况下,Whisper API 仅支持小于 25 MB 的文件。如果您有比这更长的音频文件,则需要将其分成 25 MB 或更小的块或使用压缩音频格式。为了获得最佳性能,我们建议您避免在句子中间打断音频,因为这可能会导致某些上下文丢失。 一种处理方法是使用PyDub 开源 Python 包来分割音频:
  1. from pydub import AudioSegment
  2. song = AudioSegment.from_mp3("good_morning.mp3")
  3. # PyDub handles time in milliseconds
  4. ten_minutes = 10 * 60 * 1000
  5. first_10_minutes = song[:ten_minutes]
  6. first_10_minutes.export("good_morning_10.mp3", format="mp3")

OpenAI 不保证 PyDub 等第三方软件的可用性或安全性。

提示

您可以使用提示来提高 Whisper API 生成的转录本的质量。该模型将尝试匹配提示的样式,因此如果提示也是如此,它更有可能使用大写和标点符号。然而,当前的提示系统比我们的其他语言模型要受限得多,并且只能对生成的音频提供有限的控制。以下是提示如何在不同情况下提供帮助的一些示例:
  1. 提示对于纠正模型经常在音频中错误识别的特定单词或首字母缩略词非常有帮助。例如,下面的提示改进了单词 DALL·E 和 GPT-3 的转录,这两个单词之前写为“GDP 3”和“DALI”。成绩单是关于 OpenAI 的,它制造了 DALL·E、GPT-3 和 ChatGPT 等技术,希望有一天能建立一个造福全人类的 AGI 系统
  2. 要保留被拆分成多个片段的文件的上下文,您可以使用前一个片段的转录本提示模型。这将使转录更加准确,因为模型将使用先前音频中的相关信息。该模型将只考虑提示的最后 224 个标记,而忽略之前的任何内容。
  3. 有时,模型可能会跳过文字记录中的标点符号。您可以使用包含标点符号的简单提示来避免这种情况:大家好,欢迎收听我的讲座。
  4. 该模型还可能会遗漏音频中的常见填充词。如果您想在成绩单中保留填充词,您可以使用包含它们的提示:嗯,让我想想,嗯……好吧,这就是我的想法。”
  5. 有些语言可以用不同的方式书写,例如简体中文或繁体中文。默认情况下,模型可能不会始终使用您想要的成绩单写作风格。您可以通过使用您喜欢的写作风格的提示来改进这一点。