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 Codec
silkcoder.encode("a.mp3", "a.silk", codec = Codec.libsndfile)
silkcoder.encode("a.mp3", "a.silk", codec = Codec.ffmpeg)
在 ffmpeg 模式下,你甚至可以直接传入 ffmpeg 参数
from graiax import silkcoder
# 虽然 -vn 是可有可无,但我想不出其他例子了
silkcoder.encode("a.mp4", "a.silk", codec = Codec.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 Codec
metadata = {"title": "xx群",
"artist": "xx网友"}
# Tips: 如果你硬是选了 wave,他会忽略 metadata 参数而不是报错
silkcoder.decode("a.silk", "a.flac",
codec = Codec.libsndfile,
metadata = metadata)
在 ffmpeg 模式下,你可以选择输出的码率(仅对于有损格式)
在 libsndfile 模式下,你可以选择输出的质量(vbr)(仅对于有损格式)
from graiax import silkcoder
from graiax.silkcoder import Codec
#ffmpeg 转换成 128kbps 的 mp3
silkcoder.decode("a.silk", "a.mp3",
codec = Codec.ffmpeg,
rate = 128000)
#libsndfile 转换为 压缩率最大 的 flac (注,quality 参数只能在 0~ 1 )
silkcoder.decode("a.silk", "a.flac",
codec = Codec.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.2
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.2.tar.gz | 209.1 kB | Details |
Built distributions (wheels)
Total release size: 10.5 MB
Release files / graiax-silkcoder-0.3.2.tar.gz
| Download URL | graiax-silkcoder-0.3.2.tar.gz |
|---|---|
| Size | 209.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
654ba9ca7412bb2728d0830c52e3acca2b2c2bc6f1d10d81367d281f62b117b1
|
|
BLAKE2b-256 checksum How to use checksums |
4a592b3a56c531389a7a88d3a201e9b20dcbd09c3d609b91fede98b5280ce201
|
| 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.2-cp310-cp310-win_amd64.whl
| Download URL | graiax_silkcoder-0.3.2-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 123.5 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
972cc207a59ebc29a935e249bf6f8b4fcb4068cb655984b11f94a4df71781860
|
|
BLAKE2b-256 checksum How to use checksums |
433fb671421d5320802afc7d1cb6ef7db9b045b46783b8664aa3f6a41e2f3338
|
| 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.2-cp310-cp310-win32.whl
| Download URL | graiax_silkcoder-0.3.2-cp310-cp310-win32.whl |
|---|---|
| Size | 105.4 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
b3c8eb4700c8de345e004f63e92cf8555e3e6c83e9080135280e99445c370fc5
|
|
BLAKE2b-256 checksum How to use checksums |
f06a1a5c72a8e3a4263cf70ebf60007cc36fcfc7f439789c721778ec6eb36e7d
|
| 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.2-cp310-cp310-musllinux_1_1_x86_64.whl
| Download URL | graiax_silkcoder-0.3.2-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 |
48a1423d8ddbfbe2873e98d971171bd7df0b098ed0bdc8f88b806b36ecae71cb
|
|
BLAKE2b-256 checksum How to use checksums |
6539f3c22351c319120362c92b34e7fcff61e4d1f3c883c752f7299cf13eb8e0
|
| 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.2-cp310-cp310-musllinux_1_1_i686.whl
| Download URL | graiax_silkcoder-0.3.2-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 |
3a3bc677490a5981739978f88d2ae6fb7daa779c8a2d3ff90f70132550f98d4d
|
|
BLAKE2b-256 checksum How to use checksums |
0e4ddb22d19aab6d9c300a323489b41495410bcb30c90f96091dd2d7d96279a3
|
| 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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | graiax_silkcoder-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 521.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f038f31dba5c097b12830b149b43f092578291a287659bc813fa1e879ca9202b
|
|
BLAKE2b-256 checksum How to use checksums |
ca1e10cd7ddecf833055542f31d2b2a0e4d3f92af55a40a81183ef968ca8f565
|
| 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.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | graiax_silkcoder-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 497.5 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
9cd1e724e19dcb5708a4a4c1c63ccf8f4ea04c9fedf80f9504a4da5ca3906ba9
|
|
BLAKE2b-256 checksum How to use checksums |
68f2e36cb2e07c22ddabbbcb0e6439a4c879b51e3dd73933c483cdfa92d7eb90
|
| 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.2-cp39-cp39-win_amd64.whl
| Download URL | graiax_silkcoder-0.3.2-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 123.5 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1c8aeb6ca61184881aca55f726ca598f8474f894235e0c72c6e451653265bfc2
|
|
BLAKE2b-256 checksum How to use checksums |
61692e47aaf96d2af3ec2bc236287cfcabde4e87217e66548c59a49689db63a9
|
| 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.2-cp39-cp39-win32.whl
| Download URL | graiax_silkcoder-0.3.2-cp39-cp39-win32.whl |
|---|---|
| Size | 105.4 kB |
| Tags | CPython 3.9 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
44b8a65e9fc069ba9636fe9fa16f18b6ac0752104e17c8e03b729b9349c641bf
|
|
BLAKE2b-256 checksum How to use checksums |
f4142493b7b911c8b751ced3e896fdb1a58c5600ba2482b6006d08f3d4afb37c
|
| 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.2-cp39-cp39-musllinux_1_1_x86_64.whl
| Download URL | graiax_silkcoder-0.3.2-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 |
c0c696ccd159b5f40ca243f2846266c222df7076bc9bd465f76819480f41f560
|
|
BLAKE2b-256 checksum How to use checksums |
41336fc96549dc51ea25b0cb60d868370551c77145c0c8db773ddec9f9402870
|
| 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.2-cp39-cp39-musllinux_1_1_i686.whl
| Download URL | graiax_silkcoder-0.3.2-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 |
a8dae799169a4dadc67f2c92c733b87add372a352b9d3c0ac166192025050cf0
|
|
BLAKE2b-256 checksum How to use checksums |
67bc46ad5fb72fa5ed4cec9e3994b78f438f4ad447f19a0ffb55f0a7b346bbe6
|
| 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.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | graiax_silkcoder-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 521.2 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5fadf9a68b0271bb6992cc069c69347998fa923a498c4f321090e91a173a1360
|
|
BLAKE2b-256 checksum How to use checksums |
d2fa58390591b563b424fc3945bdc7b0fcab5891b1eccf2e9e5900ee8946e31b
|
| 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.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | graiax_silkcoder-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 497.3 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
670aad0c1189a6bdeb3175b55e0eca38fb24ae3f00347a9c5b5c5592ae5354aa
|
|
BLAKE2b-256 checksum How to use checksums |
001b9d5f891e69a5e8aa1022507c2214a39542df6a6fadb0410e039bfc1d88aa
|
| 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.2-cp38-cp38-win_amd64.whl
| Download URL | graiax_silkcoder-0.3.2-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 123.5 kB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f5607bf0cc93247452433470877374013dbf2c71149aeca7aa3a2057d6c64727
|
|
BLAKE2b-256 checksum How to use checksums |
3688d4fe01af0d396967543fdc4b7e0a3861e999211a4fcf5748837e74d1ff93
|
| 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.2-cp38-cp38-win32.whl
| Download URL | graiax_silkcoder-0.3.2-cp38-cp38-win32.whl |
|---|---|
| Size | 105.4 kB |
| Tags | CPython 3.8 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
61a2f34e91c5ec165206a7b0c2b9858f2d9eea8c585b8c4ef2f122f36459ee02
|
|
BLAKE2b-256 checksum How to use checksums |
e44be4bcfc4327f5f136b4580560826a7079d784a5715a5483d61973bdf1f49f
|
| 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.2-cp38-cp38-musllinux_1_1_x86_64.whl
| Download URL | graiax_silkcoder-0.3.2-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 |
021802368ddf901e328b5826b6685f0be2aed428e774fbb407b4a3cf30979b18
|
|
BLAKE2b-256 checksum How to use checksums |
57b4a9893fceeb9e7c2666760ad48dd38b286755913f00bc0ec891ed930d5d8b
|
| 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.2-cp38-cp38-musllinux_1_1_i686.whl
| Download URL | graiax_silkcoder-0.3.2-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 |
4a22f9683e57f9513596dd2fdcfe25d5ba85b1d33d98439b2748ae9695619c8a
|
|
BLAKE2b-256 checksum How to use checksums |
f21d1d2b1b2703e4e1232c3ee2275160a9a151578925deb0fa7478b3176b2070
|
| 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.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | graiax_silkcoder-0.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 521.2 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5243ef164c7f145efa8d4c5dcd99e7c09898585e35cdc3f60a1e02dadf05cc63
|
|
BLAKE2b-256 checksum How to use checksums |
8db9372c7f49d0a3fc5810389079c1ce8e9f9f0765b05d23ccdd222d7a09613c
|
| 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.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | graiax_silkcoder-0.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 497.3 kB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
704b1823392655c29976b63772b4439a585a4412212df61ea1e3bcc80578a347
|
|
BLAKE2b-256 checksum How to use checksums |
db6023470dea3586bb9ed3b5e90af02a8cdbd1b1641a87995d085d78b2c3e061
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.13
|