diff --git a/coolq/cqcode.go b/coolq/cqcode.go index e6d4ba6..980f75d 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -24,9 +24,11 @@ import ( "github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/MiraiGo/utils" - "github.com/Mrs4s/go-cqhttp/global" log "github.com/sirupsen/logrus" "github.com/tidwall/gjson" + + "github.com/Mrs4s/go-cqhttp/global" + "github.com/Mrs4s/go-cqhttp/global/codec" ) /* @@ -667,7 +669,7 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte if err != nil { return nil, err } - return &message.VoiceElement{Data: data}, nil + return &message.VoiceElement{Data: codec.RecodeTo24K(data)}, nil case "record": f := d["file"] data, err := global.FindFile(f, d["cache"], global.VoicePath) diff --git a/global/codec/codec.go b/global/codec/codec.go index d37b683..1d685ee 100644 --- a/global/codec/codec.go +++ b/global/codec/codec.go @@ -51,3 +51,16 @@ func EncodeToSilk(record []byte, tempName string, useCache bool) (silkWav []byte } return } + +// RecodeTo24K 将silk重新编码为 24000 bit rate +func RecodeTo24K(data []byte) []byte { + pcm, err := silk.DecodeSilkBuffToPcm(data, 24000) + if err != nil { + panic(err) + } + data, err = silk.EncodePcmBuffToSilk(pcm, 24000, 24000, true) + if err != nil { + panic(err) + } + return data +} diff --git a/global/codec/codec_unsupportedarch.go b/global/codec/codec_unsupportedarch.go index 9d61766..b26d64e 100644 --- a/global/codec/codec_unsupportedarch.go +++ b/global/codec/codec_unsupportedarch.go @@ -8,3 +8,8 @@ import "errors" func EncodeToSilk(record []byte, tempName string, useCache bool) ([]byte, error) { return nil, errors.New("not supported now") } + +// RecodeTo24K 将silk重新编码为 24000 bit rate +func RecodeTo24K(data []byte) []byte { + return data +} diff --git a/global/codec/codec_unsupportedos.go b/global/codec/codec_unsupportedos.go index c8e5911..4416aa3 100644 --- a/global/codec/codec_unsupportedos.go +++ b/global/codec/codec_unsupportedos.go @@ -8,3 +8,8 @@ import "errors" func EncodeToSilk(record []byte, tempName string, useCache bool) ([]byte, error) { return nil, errors.New("not supported now") } + +// RecodeTo24K 将silk重新编码为 24000 bit rate +func RecodeTo24K(data []byte) []byte { + return data +} diff --git a/global/codec/codec_windows_arm.go b/global/codec/codec_windows_arm.go index b3d81dd..7c3a0a8 100644 --- a/global/codec/codec_windows_arm.go +++ b/global/codec/codec_windows_arm.go @@ -6,3 +6,8 @@ import "errors" func EncodeToSilk(record []byte, tempName string, useCache bool) ([]byte, error) { return nil, errors.New("not supported now") } + +// RecodeTo24K 将silk重新编码为 24000 bit rate +func RecodeTo24K(data []byte) []byte { + return data +}