OpenAI 音频处理采用分钟级计费,分享加速处理的优化技巧,740 分热度说明对成本敏感的开发者极有价值。
想让 OpenAI 转录速度更快、成本更低?只需加速你的音频。
我是字面意思。在转录之前,用 ffmpeg 以 2 倍或 3 倍速率运行你的音频。你会花费更少的 token,等待时间更短,而转录质量几乎不会下降。
这里有一个脚本,结合了我最喜欢的小工具和技巧。你需要安装 yt-dlp、ffmpeg 和 llm。
# Extract the audio from the video
yt-dlp -f 'bestaudio[ext=m4a]' --extract-audio --audio-format m4a -o 'video-audio.m4a' "https://www.youtube.com/watch?v=LCEmiRjPEtQ" -k;
# Create a low-bitrate MP3 version at 3x speed
ffmpeg -i "video-audio.m4a" -filter:a "atempo=3.0" -ac 1 -b:a 64k video-audio-3x.mp3;
# Send it along to OpenAI for a transcription
curl --request POST \
--url https://api.openai.com/v1/audio/transcriptions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header 'Content-Type: multipart/form-data' \
--form [email protected] \
--form model=gpt-4o-transcribe > video-transcript.txt;
# Get a nice little summary
cat video-transcript.txt | llm --system "Summarize the main points of this talk."
我刚刚通过直接说出结论为你节省了时间,但如果你想了解更多我如何在尝试总结 Andrej Karpathy 的一次 40 分钟演讲时意外发现这个技巧的故事,请继续阅读。
如果你想知道为什么我没有直接使用 YouTube 提供的内置自动转录功能,也请继续阅读。不过简短的答案很简单:我有点傻,错误地认为它不可用。所以我用了更复杂的方式。
我的一位前同事给我发来了 Andrej Karpathy 关于 AI 如何改变软件的演讲。我对 Andrej 不太熟悉,但看到他在特斯拉工作过。考虑到这个演讲是 Y Combinator 系列的一部分,而且长达 40 分钟,我想"呃。我……真的想看这个吗?又是来自常见嫌疑人、面对常见观众的'AI 改变一切'演讲?"
如果有什么使用场景适合把东西扔进 LLM 来获取要点然后走人,这就是了。不过我尊重给我发这个的人,想做个好事:用 AI 为我总结这个东西,盲目信任它,然后假装我看过它与那个人交流。
我的第一反应是把转录稿导入 LLM 并获取要点。这是我之前经常使用的从 YouTube 提取自动生成转录稿的脚本:
yt-dlp --all-subs --skip-download \
--sub-format ttml/vtt/best \
[url]
不过不知何故,没有下载任何字幕。我一直遇到错误!
后来,经过一番头脑风暴和重新阅读文档,我意识到我的版本(2025.04.03)已经过时了。
长话短说:更新到最新版本(2025.06.09)解决了问题,但不知道为什么我没有在走上一条完全不同的兔子洞之前尝试这个。我想我从这次探索中得到了这个小写作。
如果你更关心总结转录稿,而不太关心音频转录和 token 的复杂性,这是正确的答案,你可以在这里下车了。
我已经有一个旧的、自制的脚本,可以从任何视频 URL 提取音频,通过本地 whisper 处理,然后将转录稿转储到文本文件中。
这有效,但我在咖啡店里电池电量快没了。对于较长的本地推理来说不太理想,尽管我的 M3 MacBook Air 对我来说仍然感觉很强大。我想我会尝试将其卸载到 OpenAI 的 API。那肯定会更快,对吧?
好的,使用 whisper-1 模型,它仍然相当慢,但能完成工作。如果我选择了我认识的模型并继续,故事可能会到此结束。
但是,出于好奇,我直接选择了较新的 gpt-4o-transcribe 模型。它旨在处理多模态输入,并承诺更快的响应。
我很快遇到了另一个障碍:有 25 分钟的音频限制,而我的音频接近 40 分钟长。
一开始,我考虑修剪音频以适应,但没有显而易见的 14 分钟可以切割。修剪开头和结尾最多只能给我一分钟左右。
我想到的一个有趣、奇怪的想法(一秒钟想了想但从未尝试过)是从中间切掉一两块。也许我仍然会有足够的相关摘要信息?
然后我想到了——如果我在发送之前就加速音频呢?人们一直以 1-2 倍加速速率听播客。
所以我写了一个快速脚本:
ffmpeg -i video-audio.m4a -filter:a "atempo=2.0" -ac 1 -b:a 64k video-audio-2x.mp3
嗒哒!现在我有了更接近 20 分钟的文件可以发送给 OpenAI。
我上传了它……它的效果很好!看看下面给我的总结,让我有信心回复我的同事,好像我看过它一样。
但这里有一些……有趣的东西。我是不是刚好无意中发现了某种明显、直接的技巧?音频转录业务中的每个人都已经在做这个吗,而我只是在笨拙地进入他们的秘密?
在我的脑海中,这与优化图像有一个有趣的平行之处。传统上,你有有损和无损文件格式。有损文件格式有点在其描述中泄露了秘密——你压缩和压紧字节的程度越高,你失去的保真度就越多。它之所以有效是因为人脑不太可能会发现伪影和不完美之处。
但即使有"无损"文件格式,你也可以借助受人类感知限制的技巧。使用 PNG 或 GIF 的主要方式之一是减少调色板中的唯一颜色数。你会惊讶于 64 种或更少颜色的调色板有多频繁可能实际上是足够的,并被感知为明显更多的。
我的脑海中也有这与大脑能力之间的平行,即仍然可以理解拼写错误、缺少单词和其他错误的文本,即转置字母效应。我们的大脑有填补空白的天赋,当你用放大镜去寻找这个世界时,你会开始注意到很多。
加速音频开始会丢掉一些更微妙的声音和偶尔的较短单词,但这似乎不会伤害我理解我听到的东西的能力——即使我必须专注。这些音频转录模型似乎在这方面也很擅长。
事实证明是的。OpenAI 按音频 token 收费转录,这与输入的持续时间成比例。更快的音频 = 更少的秒数 = 更少的 token。
这里是基于 40 分钟音频文件的一些四舍五入的数字,分解了音频输入和文本输出 token 成本:
在 3 倍速率下输入 token 上节省 33% 是相当可观的!然而,这些转录模型的大部分成本仍然是输出 token。这些以每 100 万 token 10 美元的价格定价,而在本文撰写时,音频输入 token 以每 100 万 token 6 美元的价格定价。
还有一个有趣的注意——我的 2 倍和 3 倍版本的输出 token 完全相同:2,048。我认为这是有道理的?在输出 token 是该模型理解和总结输入能力反映的程度上,我的看法是"总结"(即 token 减少)版本的相同音频产生相同的可理解性。
这可能也反映了使用 gpt-4o-transcription 模型时转录一般有 4,096 token 上限。我怀疑一半的上下文窗口是为输出 token 保留的,这基本上反映了我们的请求将其用尽。我怀疑对于较长的转录我们可能会得到递减的结果。
所以单次转录的回信纸计算器看起来像这样:
6 * (audio_input_tokens / 1_000_000) + 10 * (text_output_tokens / 1_000_000);
这似乎与定价页面上说的每分钟 0.006 美元的估计成本不太一致,至少对于 2 倍速度是这样。那个版本(19-20 分钟)似乎花费约 0.09 美元,而 3 倍版本(13 分钟)花费约 0.07 美元(实际上相当准确),如果我添加 token 的话。
# Pricing for 2x speed
6 * (11_856 / 1_000_000) + 10 * (2_048 / 1_000_000) = 0.09
# Pricing for 3x speed
6 * (7_904 / 1_000_000) + 10 * (2_048 / 1_000_000) = 0.07
似乎该估计不仅基于音频的长度,而且基于一些假设,即从正常语速会生成多少 token。
这很……迷人!我想知道 John Moschitta 对此有何看法。
将这些成本与 whisper-1 进行比较很容易,因为定价表更有信心地将成本(而不是"估计"成本)宣传为每分钟固定 0.006 美元。我假设那是处理的音频分钟,而不是推理分钟。
gpt-4o-transcription 模型实际上比较得相当有利。
简短来说,是的!虽然不是特别严格,但看起来我们仅通过加速音频,就将转录 40 分钟音频文件的成本从 0.09 美元降低到 0.07 美元,减少了 23%。
如果我们可以与修剪到 25 分钟限制的 1 倍版本的音频文件进行比较,我敢打赌我们可以画出一个甚至更令人印象深刻的成本削减图景。我们可以用 whisper-1 图表做的有点像。你可以主张这种技术降低成本 67%!
我不知道——我没看过,哈哈。那就是整个要点。如果那个答案让你感到不舒服,请为这个我们正在冲向的未来做好准备。天哪。
更有用的是,我没有逐字比较,但对 2 倍和 3 倍版本的抽查看起来很好。4 倍速太快了——转录开始变得滑稽地奇怪。所以,2 倍和 3 倍似乎是效率和保真度之间的最佳位置,尽管这显然将取决于人们首先在其中说话的速度有多快。
当我把它推到 4 倍时,结果变得从喜剧上无法使用。
那当然没有阻止我的总结调用去尝试不过。
嘿,不是我参加过的最差的演讲!
总之,简而言之,为了节省时间和金钱,考虑在转录之前将要转录的音频速度翻倍或翻三倍。折衷是,一如既往,保真度,但这不是一个微不足道的节省。
简单、快速且惊人有效。
OpenAI 根据音频时长(whisper-1)或 token(gpt-4o-transcribe)对转录收费。
你可以在上传前用 ffmpeg 加速音频以节省时间和金钱。
这减少了音频 token(或时长),降低了你的账单。
2 倍或 3 倍速度效果很好。
4 倍速度?可能太多了——但尝试很有趣。
如果你发现我的数学有问题,有问题,找到了更严格的定性研究,比较不同输出速度,请联系我!或者如果你觉得这太酷了,想雇我做一些有趣的事情...
如果你喜欢阅读这个,请考虑在 GitHub 上赞助我的工作或订阅我的通讯。
分享这篇文章:Hacker News · Reddit · LinkedIn · Mastodon。
发布于 2025 年 6 月 24 日星期二。以纯文本形式阅读这篇文章。