takayama-lily / oicq

Tencent QQ Bot Library for Node.js
https://oicqjs.github.io/oicq/
Mozilla Public License 2.0
2.68k stars 399 forks source link

关于语音音频质量的一些探讨 #483

Open yuchiXiong opened 1 year ago

yuchiXiong commented 1 year ago

Node.js Version

v18.12.1

Package(oicq) Version

No response

Login Protocol

None

Bug Description (最好截图说明,你的文字描述可能无法准确传达信息)

开发者你们好,最近我使用 Yunzai-Bot 搭建了自己的原神机器人并开发了一个语音相关的插件 voice-plugin,在使用的过程中我发现基于 oicq 作为协议库提供的音频质量相比 MiraiGo 差很多,在翻阅了几个相关的库(mirai/miraiGo/oicq)的源码反复对比以后,通过调整一个接口参数与调整编码方式为 silk 在我的项目中改善了音质,这里是我的 commit,我对项目整体的了解不多,不知道各位维护者是否能帮忙看一下这些改动对于项目整体的影响,以及我是否可以将其提交 PR 合并至本项目。

这里是关于改动的一些说明:

  1. 关于编码:在这个改动中,我将原有的编码 ARM 调整为 PCM ,然后使用 silk-sdk 编码为 SILK 格式。这一改动参考的是 go-cqhttp 的这个函数
  2. 关于上传前的请求参数,我将序号为14的参数(codec)调整为0,这一改动的参考是 mirai 的这行代码,在这行代码的注释中提到 HTTP 方式时只支持传0。另外 protobuf 的格式较难理解,这里参考了 miraiGo 的相关文件

Log Details (控制台日志,请提供包含前后一段时间内的)

No response