-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: audio transcription only charge for the length of audio duration #2022
base: main
Are you sure you want to change the base?
Conversation
2fc6caa
to
c6c8053
Compare
作者大佬啊,合一下,这个修复太重要了,很严重的问题,944都一年了 |
合并前可以考虑使用我的 fork https://github.com/Laisky/one-api 仅需替换镜像即可使用,完全兼容上游。 |
这个计费有个疑问: whisper-1模型ffmpeg计算出来时长是2.856秒,计费是$0.006 / 分钟。请求后出来的价格是$0.000870 难道不是 (2.856/60)*0.006 = 0.0002856,还是说这个模型还有额外的扣费? |
whisper 逻辑抄的 944 的,看了下现在的代码版本感觉确实有问题。 我这么改了一下,4s 的音频会产生 $0.000420 的费用 // AudioTokensPerSecond is the number of audio tokens per second for each model.
var AudioPromptTokensPerSecond = map[string]float64{
// whisper 的 API 价格是 $0.0001/sec。one-api 的历史倍率为 15,对应 $0.03/kilo_tokens。
// 那么换算后可得,每秒的 tokens 应该为 0.0001/0.03*1000 = 3.3333
"whisper-1": 0.0001 / 0.03 * 1000,
// gpt-4o-audio series processes 10 tokens per second
"gpt-4o-audio-preview": 10,
"gpt-4o-audio-preview-2024-12-17": 10,
"gpt-4o-audio-preview-2024-10-01": 10,
} |
涉及改动比较多,这个分支没法改了,我统一在 #2032 里改了。 |
现在是对的。 audioTokens, err := countAudioTokens(c, audioModel) 不过,在返回audioTokens之前不应该取整,应该始终保证audioTokens是float64,最后计算能保证精度。 不然0.0002856的实际扣费 变成0.0003 // 保持float64浮点数精度直到最后一步 再使用math.Ceil才能保证最小误差。
exactQuota := audioTokens * ratio
preConsumedQuota = int64(math.Ceil(exactQuota)) 这样费用是 0.000286 最接近! |
现在很多基于oneapi的第三方二开的版本 都在用你这套commits,都是超额计费。 |
哈哈哈哈,这锅我不想背😂。我本意只是加 gpt-4o-audio,whisper 那部分代码我根本没看。再说真有人会用 openai 的 whisper?明明有那么多免费的 whisper 供应商,比如 groq 和 cloudflare。 |
好了,目前全部改成到最后一步再取 math.Ceil 了 |
对 #944 的更新,合并本 PR 后可以关闭 #944 。
openai audio transcription/translation 接口仅对输入音频的长度进行计费。但是目前 one-api 的实现是对输出的字符进行计费。