gpt4 book ai didi

javascript - 拆分 Ogg Opus 文件流

转载 作者:行者123 更新时间:2023-12-02 22:30:55 25 4
gpt4 key购买 nike

我正在尝试将 OGG_OPUS 编码流发送到谷歌的语音到文本流服务。
由于 Google 对其流请求施加了时间限制,因此我必须以固定的时间间隔将音频流路由到另一个 Google Speech To Text 流 session 。
根据我的阅读,OGG流中的页面不能独立读取,因为页面中的数据是通过考虑前一页和下一页的数据来计算的。
如果是这样,我们是否可以在某个点切断流并用剩余的数据重新创建一个全新的流?
在某个点停止并在新流中发送数据是行不通的,因为初始 OGG header 数据包在第二个流中也不可用。
我知道这个问题可以使用 PCM 数据来解决,因为它没有被编码,一个 PCM 流可以在任何时候简单地拆分并变成一个新的流。由于比特率高,我不能使用 PCM 流,而且我不喜欢使用无损质量,因为我正在传输语音数据流。
引用:https://www.rfc-editor.org/rfc/rfc7845#section-3

最佳答案

OpusFileSplitter可以拆分 Opus 音频文件。

只要文件以流的开头 (BOS) 标题和注释页面开头,Ogg 页面就可以独立读取。您可以将一个 Ogg 文件拆分为多个文件,方法是创建以 Ogg 标题页开头并在 .例如,这个 Ogg Opus 文件:

*********************************************************
* * * * *
* Header * Audio Data * Audio Data * Audio Data *
* Page * Page 1 * Page 2 * Page 3 *
* * * * *
*********************************************************

可以拆分成2个文件:
***************************
* * *
* Header * Audio Data *
* Page * Page 1 *
* * *
***************************

******************************************
* * * *
* Header * Audio Data * Audio Data *
* Page * Page 2 * Page 3 *
* * * *
******************************************

关于可以拆分并跨越多个页面的音频片段,您是正确的。我假设如果页面包含不完整的音频片段,可能会丢失几毫秒,但这不应该破坏语音识别。不幸的是,我的本地测试使用 opusenc 生成的 Opus 文件。 util,它没有创建跨页面分割段的页面,这似乎是分割文件的好东西!

OpusFileSplitter.scanPages() 显示如何找到页面边界。

关于javascript - 拆分 Ogg Opus 文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58274671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com