Graiax-silkcoder
现在版本:
这,是一个Python的silk转码器
通过将kn007/silk-v3-decoder通过简单的封装制成
安装
从 PyPI
# 如果需要转换非wav的音频文件,则需要自行安装ffmpeg
pip install graiax-silkcoder
# 也可以通过下面的方式使用imageio-ffmpeg中的ffmpeg
pip install graiax-silkcoder[ffmpeg]
# 在 0.3.0 后,可以通过以下方式使用libsndfile来解析音频
pip install graiax-silkcoder[libsndfile]
注: 假设你是Windows用户,安装时出现了error: Microsoft Visual C++ 14.0 is required:
请安装Microsoft C++ Build Tools
从 conda-forge
conda install graiax-silkcoder -c conda-forge
# 如果需要 ffmpeg,可以一并从 conda-forge 安装
conda install ffmpeg -c conda-forge
Q&A
ImportError:DLL load failed while importing _silkv3:找不到指定的模块
相关issue: #23
现在本库已经通过 Github Actions 来预编译 whl 了,出现这种问题一般不是说没有编译。
如果遇到这种问题,请在这里下载最新版本的 C++ Redistributable
IOS 音频问题
IOS 的音频解码器因为某些特性,只支持解码 25kbps 以下 的音频。
所以在 0.2.6 中,我们新增了一个 ios_adaptive 参数(默认为 False)。
当为 True 时,将把自适应最高码率限制在 24kbps 以下(一般是限制在 100kbps 以下)
ffmpeg 转换成 aac 格式的问题
因为 graiax-silkcoder 全程采用 PIPE 的形式跟 ffmpeg 传输,
所以假设你想要将 silk 转码成 aac 的时候,就会出现一些问题。
解决方法如下
await silkcoder.async_decode("a.silk", "a.m4a", audio_format="adts")
注:ADTS 是 AAC 音频的传输流格式
自定义ffmpeg_path
可能有一些用户会想要自定义ffmpeg的路径 你可以使用以下方法解决:
from graiax import silkcoder
silkcoder.set_ffmpeg_path("./ffmpeg")
CLI(0.2.0新增)
使用办法
# 其他参数与encode / decode 保持一致
python -m graiax.silkcoder encode -i "a.wav" "a.silk"
python -m graiax.silkcoder decode -i "a.silk" "a.wav"
是 ffmpeg 还是 libsndfile
在该项目最开始的时候,就有人吐槽过:为了简简单单的音频转换去下载一个大的离谱的 ffmpeg,这也太麻了吧。 (注:虽然说 ffmpeg 可以通过 disable 一大堆不必要视频/滤镜库来达到减小体积的目的,但是这需要自己编译,对小白挺不友好的)
所以,从 0.3.0 开始,开始增加了通过 libsndfile 来使用解析音频。
libsndfile 是一款广泛用于读写音频文件的C语言库, 他支持包括 flac, ogg, opus, mp3[1]等多种格式。
因为
使用方法
Tips:
因为同步和异步的区别只有前面是否有一个 async_
所以下面我们就只拿同步方法距离了
编码
你可以传入 pathlike、str、bytes 作为你的输入
from io import BytesIO
from pathlib import Path
from graiax import silkcoder
data: bytes = silkcoder.encode("a.wav")
data: bytes = silkcoder.encode(Path("a.wav"))
data: bytes = silkcoder.encode(Path("a.wav").read_bytes())
data: bytes = silkcoder.encode(BytesIO(Path("a.wav").read_bytes()))
它也能输出到 filelike、bytes
from io import BytesIO
from pathlib import Path
from graiax import silkcoder
data: bytes = silkcoder.encode("a.wav")
silkcoder.encode("a.wav", "a.silk")
silkcoder.encode("a.wav", Path("a.silk"))
silkcoder.encode("a.wav", BytesIO())
它能做到截取一部分来编码
from graiax import silkcoder
#从最开始截取 5s
silkcoder.encode("a.wav", "a.silk", t=5)
#从第 10s 开始截取 5s
silkcoder.encode("a.wav", "a.silk", ss=10, t=5)
你可以指定你的编码器
from graiax import silkcoder
from graiax.silkcoder import Method
silkcoder.encode("a.mp3", "a.silk", codec = Method.libsndfile)
silkcoder.encode("a.mp3", "a.silk", codec = Method.ffmpeg)
在 ffmpeg 模式下,你甚至可以直接传入 ffmpeg 参数
from graiax import silkcoder
# 虽然 -vn 是可有可无,但我想不出其他例子了
silkcoder.encode("a.mp4", "a.silk", codec = Method.ffmpeg,
ffmpeg_para = ["-vn"])
你还可以指定输出 silk 的码率大小
from graiax import silkcoder
# 默认状态下将会将尝试将目标语音大小限制在980kb上下
silkcoder.encode("a.wav", "a.silk", rate = 70000)
解码
跟编码一样,你的输入和输出都支持 pathlike、str、bytes
在非 wave 模式下,你可以写 metadata
from graiax import silkcoder
from graiax.silkcoder import Method
metadata = {"title": "xx群",
"artist": "xx网友"}
# Tips: 如果你硬是选了 wave,他会忽略 metadata 参数而不是报错
silkcoder.decode("a.silk", "a.flac",
codec = Method.libsndfile,
metadata = metadata)
在 ffmpeg 模式下,你可以选择输出的码率(仅对于有损格式)
在 libsndfile 模式下,你可以选择输出的质量(vbr)(仅对于有损格式)
from graiax import silkcoder
from graiax.silkcoder import Method
#ffmpeg 转换成 128kbps 的 mp3
silkcoder.decode("a.silk", "a.mp3",
codec = Method.ffmpeg,
rate = 128000)
#libsndfile 转换为 压缩率最大 的 flac (注,quality 参数只能在 0~ 1 )
silkcoder.decode("a.silk", "a.flac",
codec = Method.libsndfile,
quality = 1)
你甚至可以在 ffmpeg 模式下输入 ffmpeg 参数
from graiax import silkcoder
silkcoder.decode("a.silk", "a.mp3", ffmpeg_para = ["-ar", "44100"])
注
graiax-silkcoder对libsndfile的支持来源于第三方库soundfile,而该库在 1.1.0 之前并不支持mp3、opus
Metadata
Release files for graiax-silkcoder 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| graiax-silkcoder-0.3.1.tar.gz | 208.9 kB | Details |
Built distributions (wheels)
Total release size: 10.5 MB
Release files / graiax-silkcoder-0.3.1.tar.gz
| Download URL | graiax-silkcoder-0.3.1.tar.gz |
|---|---|
| Size | 208.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
37b76153ac13d7c7bc15c4a60309b72b21e88a122a03cefefb760e43c24f166c
|
|
BLAKE2b-256 checksum How to use checksums |
b370e1cd47d158c26811d30aeba6227c5a5f77469f971127f61f53331501e514
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp310-cp310-win_amd64.whl
| Download URL | graiax_silkcoder-0.3.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 123.0 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a4505bce43b4ba1c1112000d7f270af6b8ff3754d8ca8d82e03d3757545e8960
|
|
BLAKE2b-256 checksum How to use checksums |
7a69b6868d3f473fafa207510bb942d7d0a7c6456bc4f5d987d03bae54acd502
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp310-cp310-win32.whl
| Download URL | graiax_silkcoder-0.3.1-cp310-cp310-win32.whl |
|---|---|
| Size | 104.9 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
520d1d03d5d75499f6d68d4fb67b8d7b81d8ff61754d6e4a95a96b426e1a2d30
|
|
BLAKE2b-256 checksum How to use checksums |
f3060f801ea2370f4fd997bf744436dbe50615f313fb11c77d57826f2d49dbfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp310-cp310-musllinux_1_1_x86_64.whl
| Download URL | graiax_silkcoder-0.3.1-cp310-cp310-musllinux_1_1_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux musl 1.1+ x86-64 |
|
SHA-256 checksum How to use checksums |
1ea98a161e36e335dc240bc9c76f68686493d2c8a5d4dc1dfe0e814d78f85d8f
|
|
BLAKE2b-256 checksum How to use checksums |
ed90356b2b9cca54be48b4843e2bd6d3d7616450bb0f9ee2e34c72f9e091d1e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp310-cp310-musllinux_1_1_i686.whl
| Download URL | graiax_silkcoder-0.3.1-cp310-cp310-musllinux_1_1_i686.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux musl 1.1+ x86-32 |
|
SHA-256 checksum How to use checksums |
3de6967f37e46a582fb1146ede1cc9abd275b9290cd975ccf5436670e6689c1a
|
|
BLAKE2b-256 checksum How to use checksums |
3e3ceb883a2c64fc4a821c93fbbe5e455d36d4cb96550c22b033cf10a7a9398e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | graiax_silkcoder-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 521.0 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a70cf5229e6c3aed9cd0a80d1c8bc6c70a0e3b3d1b79aadad84c290525d8df08
|
|
BLAKE2b-256 checksum How to use checksums |
75e5b5e69cebe921de3e4bdad8a9e8380c33425e90c8a4af91355c1e4050ac1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | graiax_silkcoder-0.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 497.1 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
83a99d8ac6cdf70d779e89505f52f8b3763e2c2923e9de15ca36a83d1c43ed53
|
|
BLAKE2b-256 checksum How to use checksums |
3a1fd6544870df4e50a7cc7041b3f454352f19e68984d5ac448d478f6a9e4448
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp39-cp39-win_amd64.whl
| Download URL | graiax_silkcoder-0.3.1-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 123.0 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cbad8fe833eac0b595e36ae22c13c2a1f4af59d2ba4e8341be70e56bf0b6bfc2
|
|
BLAKE2b-256 checksum How to use checksums |
faf7d85c15ab4ed011fc9f0005708143962e8b4e84255a0eac721eaa870fe82b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp39-cp39-win32.whl
| Download URL | graiax_silkcoder-0.3.1-cp39-cp39-win32.whl |
|---|---|
| Size | 104.9 kB |
| Tags | CPython 3.9 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
32d4e8b784eae79740bc1dad405d93cc23f2c300c5ab4bbdf66e15ca49d8b232
|
|
BLAKE2b-256 checksum How to use checksums |
c4921193266b4e98fc5d4acc94862e6f7d25d0758deb3125d5e64bc2b12df8e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp39-cp39-musllinux_1_1_x86_64.whl
| Download URL | graiax_silkcoder-0.3.1-cp39-cp39-musllinux_1_1_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Linux musl 1.1+ x86-64 |
|
SHA-256 checksum How to use checksums |
d247cff6547f001e91f1b653bc19c8536d56142f1bb0739f914681fa7c4b51aa
|
|
BLAKE2b-256 checksum How to use checksums |
83d4792c9f6797c0ae21c8c3e478c32408ca676884c00e8784376646a38201cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp39-cp39-musllinux_1_1_i686.whl
| Download URL | graiax_silkcoder-0.3.1-cp39-cp39-musllinux_1_1_i686.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Linux musl 1.1+ x86-32 |
|
SHA-256 checksum How to use checksums |
8b0779df30278801c735eb94240663fcfd1d466dba487f4c59f08844b1787100
|
|
BLAKE2b-256 checksum How to use checksums |
f3db9571e9ba748cda3375c9198d546d571adf43471826b26615fe4413b4e26b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | graiax_silkcoder-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 520.7 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
97702e0492e947388b95c009c2fc82aa836fa6e8f77da21067827d7247eac715
|
|
BLAKE2b-256 checksum How to use checksums |
cc8ec53b8315ff67022290169a33603bc8543dc53a13957e3f98a4ea0cecf613
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | graiax_silkcoder-0.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 496.9 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
490dfef55512e79eff1a51930b0f57e506dc92ec882fa59870ad184443ae3399
|
|
BLAKE2b-256 checksum How to use checksums |
37ee8c29ad377b0a3e35fd3d05ef5aaf8cc385b945a32fb0ba01ada13dea32ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp38-cp38-win_amd64.whl
| Download URL | graiax_silkcoder-0.3.1-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 123.0 kB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
969859a7aad5c6f06d3197748c6a905394521803a6caf96d8cc9fc44252e3619
|
|
BLAKE2b-256 checksum How to use checksums |
e9b175056c88e260d739ead2a0661384ead8f4bde850a6c5d7099c8cc45caf20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp38-cp38-win32.whl
| Download URL | graiax_silkcoder-0.3.1-cp38-cp38-win32.whl |
|---|---|
| Size | 104.9 kB |
| Tags | CPython 3.8 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
b8b25d591d9696cf68c3b460a5abbe9f8d5f7887fb924216e6899158df142b84
|
|
BLAKE2b-256 checksum How to use checksums |
8cc60d156c4d208695696daa062ed820e8a8307d7eecaa55c4af90445625113b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp38-cp38-musllinux_1_1_x86_64.whl
| Download URL | graiax_silkcoder-0.3.1-cp38-cp38-musllinux_1_1_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.8 Linux musl 1.1+ x86-64 |
|
SHA-256 checksum How to use checksums |
2236f98149a69e4ecd9ac2cee83fa77ecd247b65a390a12faeee84ed0e91560c
|
|
BLAKE2b-256 checksum How to use checksums |
84263ebdb2304e29efdddbe442f19b078faa2f6c466f2cecc94df519e5f7a314
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp38-cp38-musllinux_1_1_i686.whl
| Download URL | graiax_silkcoder-0.3.1-cp38-cp38-musllinux_1_1_i686.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.8 Linux musl 1.1+ x86-32 |
|
SHA-256 checksum How to use checksums |
8c8cdf40068943b841edd47a8276e98eef6b9c459f2c61f89f8e2682637fbd7b
|
|
BLAKE2b-256 checksum How to use checksums |
19adad93a383d7611c383495b135d323edf362982a8bf9d6aa6c406df7d98b4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | graiax_silkcoder-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 520.7 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
2a03b90a5d3e5cd3fd6a912170bd5112b73032a8177446b1481b9f6a4d1c15a4
|
|
BLAKE2b-256 checksum How to use checksums |
03f22d250067c107227f8dc42bee97ad1944f00ecf0e6860af98b58a395f1d74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|
Release files / graiax_silkcoder-0.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | graiax_silkcoder-0.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 496.9 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
48885005a6a9525c7d81001739fb6d0858f5ec8dcc2136edcdf0a9a88e9038eb
|
|
BLAKE2b-256 checksum How to use checksums |
3459d20c3abf9fd05c4f98a4676b3af68788f10dc524cf814c9938526fad0796
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|