Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Laisky
Copy link
Contributor

@Laisky Laisky commented Jan 8, 2025

#944 的更新,合并本 PR 后可以关闭 #944

openai audio transcription/translation 接口仅对输入音频的长度进行计费。但是目前 one-api 的实现是对输出的字符进行计费。

@Laisky Laisky force-pushed the patch/audio-duration branch 2 times, most recently from 2fc6caa to c6c8053 Compare January 14, 2025 06:42
@maranello-o
Copy link

作者大佬啊,合一下,这个修复太重要了,很严重的问题,944都一年了

@maranello-o
Copy link

@songquanpeng

@Laisky
Copy link
Contributor Author

Laisky commented Jan 16, 2025

作者大佬啊,合一下,这个修复太重要了,很严重的问题,944都一年了

合并前可以考虑使用我的 fork https://github.com/Laisky/one-api

仅需替换镜像即可使用,完全兼容上游。

@popjane
Copy link

popjane commented Jan 26, 2025

作者大佬啊,合一下,这个修复太重要了,很严重的问题,944都一年了

合并前可以考虑使用我的 fork https://github.com/Laisky/one-api

仅需替换镜像即可使用,完全兼容上游。

这个计费有个疑问:

whisper-1模型ffmpeg计算出来时长是2.856秒,计费是$0.006 / 分钟。请求后出来的价格是$0.000870

难道不是 (2.856/60)*0.006 = 0.0002856,还是说这个模型还有额外的扣费?

@Laisky
Copy link
Contributor Author

Laisky commented Jan 26, 2025

作者大佬啊,合一下,这个修复太重要了,很严重的问题,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,
}

@Laisky
Copy link
Contributor Author

Laisky commented Jan 26, 2025

涉及改动比较多,这个分支没法改了,我统一在 #2032 里改了。

也推荐使用这个 https://github.com/Laisky/one-api

@popjane
Copy link

popjane commented Jan 26, 2025

涉及改动比较多,这个分支没法改了,我统一在 #2032 里改了。

也推荐使用这个 https://github.com/Laisky/one-api

现在是对的。

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 最接近!

@popjane
Copy link

popjane commented Jan 26, 2025

现在很多基于oneapi的第三方二开的版本 都在用你这套commits,都是超额计费。

@Laisky
Copy link
Contributor Author

Laisky commented Jan 26, 2025

现在很多基于oneapi的第三方二开的版本 都在用你这套commits,都是超额计费。

哈哈哈哈,这锅我不想背😂。我本意只是加 gpt-4o-audio,whisper 那部分代码我根本没看。再说真有人会用 openai 的 whisper?明明有那么多免费的 whisper 供应商,比如 groq 和 cloudflare。

@Laisky
Copy link
Contributor Author

Laisky commented Jan 26, 2025

涉及改动比较多,这个分支没法改了,我统一在 #2032 里改了。
也推荐使用这个 https://github.com/Laisky/one-api

现在是对的。

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 最接近!

好了,目前全部改成到最后一步再取 math.Ceil 了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants