transform audio file to silk
Project description
Graiax-silkcoder
现在版本:
这,是一个Python的silk转码器
通过将kn007/silk-v3-decoder通过简单的封装制成
安装
从 PyPI
# 如果需要转换非wav的音频文件,则需要自行安装ffmpeg
pip install graiax-silkcoder
# 也可以通过下面的方式使用imageio-ffmpeg中的ffmpeg
pip install graiax-silkcoder[ffmpeg]
注: 假设你是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_path
可能有一些用户会想要自定义ffmpeg的路径 你可以使用以下方法解决:
from graiax import silkcoder
silkcoder.set_ffmpeg_path("./ffmpeg")
使用方法
同步情况下
from pathlib import Path
from graiax import silkcoder
# silk编码
# 你可以文件→文件
silkcoder.encode('a.wav', 'a.silk')
# 你可以文件→二进制数据
silk: bytes = silkcoder.encode('a.wav')
# 你可以二进制数据→二进制数据
silk: bytes = silkcoder.encode(Path('a.wav').read_bytes())
# 你可以二进制数据→文件
silkcoder.encode(Path('a.wav').read_bytes(), 'a.silk', audio_format='wav')
# 你可以指定让ffmpeg解码音频,也可以让程序自己选择
# 注:只有当音频是wav且ensure_ffmpeg=None时才会不使用ffmpeg处理
silkcoder.encode('a.wav', 'a.silk', ensure_ffmpeg=True)
# 你也可以设置码率(默认状态下将会将尝试将目标语音大小限制在980kb上下)
silkcoder.encode('a.wav', 'a.silk', rate=70000)
# 你甚至可以剪辑音频
silkcoder.encode('a.wav', 'a.silk', ss=10, t=5) # 从第10s开始剪辑5s的音频
# silk解码
# 你可以文件→文件
silkcoder.decode('a.silk', 'a.wav')
# 你可以文件→二进制数据
wav: bytes = silkcoder.decode('a.silk')
# 你可以二进制数据→二进制数据(必填audio_format)
mp3: bytes = silkcoder.decode(Path('a.silk').read_bytes(), audio_format='mp3')
# 你可以二进制数据→文件
silkcoder.decode(Path('a.silk').read_bytes(), 'a.wav')
# 你可以指定让ffmpeg解码音频,也可以让程序自己选择
# 注:只有当音频是wav且ensure_ffmpeg=None时才会不使用ffmpeg处理
silkcoder.decode('a.silk', 'a.wav', ensure_ffmpeg=True)
# 你也可以直接传入ffmpeg参数来输出
silkcoder.decode('a.silk', 'a.mp3', ffmpeg_para=['-ab', '320k'])
异步情况下
# 假设以 'python -m asyncio' 启动的 python 终端
from pathlib import Path
from graiax import silkcoder
# silk编码
# 你可以文件→文件
await silkcoder.async_encode('a.wav', 'a.silk')
# 你可以文件→二进制数据
silk: bytes = await silkcoder.async_encode('a.wav')
# 你可以二进制数据→二进制数据
silk: bytes = await silkcoder.async_encode(Path('a.wav').read_bytes())
# 你可以二进制数据→文件
await silkcoder.async_encode(Path('a.wav').read_bytes(), 'a.silk', audio_format='wav')
# 你可以指定让ffmpeg解码音频,也可以让程序自己选择
# 注:只有当音频是wav且ensure_ffmpeg=None时才会不使用ffmpeg处理
await silkcoder.async_encode('a.wav', 'a.silk', ensure_ffmpeg=True)
# 你也可以设置码率(默认状态下将会将尝试将目标语音大小限制在980kb上下)
await silkcoder.async_encode('a.wav', 'a.silk', rate=70000)
# 你甚至可以剪辑音频
await silkcoder.async_encode('a.wav', 'a.silk', ss=10, t=5) # 从第10s开始剪辑5s的音频
# silk解码
# 你可以文件→文件
await silkcoder.async_decode('a.silk', 'a.wav')
# 你可以文件→二进制数据
wav: bytes = await silkcoder.async_decode('a.silk')
# 你可以二进制数据→二进制数据(必填audio_format)
mp3: bytes = await silkcoder.async_decode(Path('a.silk').read_bytes(), audio_format='mp3')
# 你可以二进制数据→文件
await silkcoder.async_decode(Path('a.silk').read_bytes(), 'a.wav')
# 你可以指定让ffmpeg解码音频,也可以让程序自己选择
# 注:只有当音频是wav且ensure_ffmpeg=None时才会不使用ffmpeg处理
await silkcoder.async_decode('a.silk', 'a.wav', ensure_ffmpeg=True)
# 你也可以直接传入ffmpeg参数来输出
await silkcoder.async_decode('a.silk', 'a.mp3', ffmpeg_para=['-ab', '320k'])
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"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
graiax-silkcoder-0.2.7.tar.gz
(204.4 kB
view hashes)
Built Distributions
Close
Hashes for graiax_silkcoder-0.2.7-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 510b6d24c685751ded3a6a1162e10e145274ae2fc25969394c976831a6f11bc6 |
|
MD5 | c0deed633de961727c9d294fda2865cc |
|
BLAKE2b-256 | 7e2d036928fd6e20b2a6d9d9de3761f58ca8edb6707f1a2fdc32ee6670f19abc |
Close
Hashes for graiax_silkcoder-0.2.7-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3e355f07b215f983e3ccf90763e1d1568070f62a33bc3afa46f378e83da0ee0 |
|
MD5 | 827dfcdeaf743a7ebd1340ba517778ae |
|
BLAKE2b-256 | ef4b0a4138c0b52f5edaf4f636722244dd5137e17ccc6886509beabd540ade18 |
Close
Hashes for graiax_silkcoder-0.2.7-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27c6f34a1d1ed458eb1a5b9e6dc27baa64a74296c700ec2f85ffd5b13472cd3f |
|
MD5 | 01523245af67a9085310b90488049108 |
|
BLAKE2b-256 | 122caf3236f0cb6fa20a039139e0435e9fed41dd9e60eeea8d252b5938d72949 |
Close
Hashes for graiax_silkcoder-0.2.7-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93f62e508f3c3a5eba0bdcef0a60ed233ec3a54ec257a5cd0ed7100606826211 |
|
MD5 | b66806444c4626115d758b99a81b49f7 |
|
BLAKE2b-256 | 62c42866702fd071d213c2aadac1a7bf699172dc617cad45cb3ece323fd2ebbb |
Close
Hashes for graiax_silkcoder-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83085ba0c905d25b40b3047e799dbe3b6048102d015e96885fd097dc9621f4b4 |
|
MD5 | dc187b19eee03a230c37447f5eef424e |
|
BLAKE2b-256 | c7620aba199cade056bba0e3d1b519b2625cb8bf90e9b54a6c8b2c1d51235cde |
Close
Hashes for graiax_silkcoder-0.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fde1d031e8a40ebd4021956fee547a862b1ad8e01926a5b6f3ba24102a2006d0 |
|
MD5 | fa3b4562528815ee74b573f1b6c3867f |
|
BLAKE2b-256 | 0255c01ed1e1cac8d4ed583db76a37ef097d66a64443d6cd1d575aa616a931e8 |
Close
Hashes for graiax_silkcoder-0.2.7-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b47531f30f056daaa9fbc32beaaea9d5e01f9bed39815cc670e5472526b38f0 |
|
MD5 | a1233a2bae0b487cf6335d242f32e0ee |
|
BLAKE2b-256 | c8884614b3500dd5f46ddb30c2704dad0814a7c085ea9f60fe06f8dea6425f99 |
Close
Hashes for graiax_silkcoder-0.2.7-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c113369c745681dd517035f538740a95454d0049d34df25bfb32b62b1389421a |
|
MD5 | 53da1b472548d1c9867b45fcb64b4d93 |
|
BLAKE2b-256 | f53cef2170c2e67e59962ab2783c86c5241f726bdb7c212607c34b3c5e5e7e00 |
Close
Hashes for graiax_silkcoder-0.2.7-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f00a963ea28fe849432b21c3fed81a480ac842479f8f6f0a9ca2322d49e34190 |
|
MD5 | 91793db636d5589f8d557e3c96caebc3 |
|
BLAKE2b-256 | 5a57cba69a9be6220de7ab832cec9b04a857c264c5b70b346065478dbc2c29df |
Close
Hashes for graiax_silkcoder-0.2.7-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9846c3caaf3256418fea2bea58cbedfacedb5c99c5ff25970f75ad8472959f85 |
|
MD5 | be391589f42dd5ca9de573f993c97681 |
|
BLAKE2b-256 | 7f8b7138aef799915a6af15f688b30aa4fa7f446022b6c916b4fbcdc7a8d0092 |
Close
Hashes for graiax_silkcoder-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31d09e1b288c57023754dcabd459a7f09a4974c3538d9f5c2e749d791e296297 |
|
MD5 | bf9903d3f775d88a0bef1020762d2591 |
|
BLAKE2b-256 | e87eee5eb6241fdbb3efce57da1a75b00307ec69d422ff88efabcb4929991e2e |
Close
Hashes for graiax_silkcoder-0.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ccca0401d5fc13cd018add606a09398f82c4ef47c2dbaeac46784a2110ea970 |
|
MD5 | fe71bb72476ec343b0e870e8bfb3b922 |
|
BLAKE2b-256 | 34c82bbd453f15ebd89c3d3b4a9fe157b903fd9e20ceed93168c819570b9111e |
Close
Hashes for graiax_silkcoder-0.2.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d177b75af5c7ebcdfc3d9522d6c76bd172b0abce33f4a73245c62b2e122c52e0 |
|
MD5 | 3bdff819609622069c626a5bb0e4413a |
|
BLAKE2b-256 | f433061aa7b3f580f2c209d47951db93f7314f5502980a7bb65add17b2e4b86f |
Close
Hashes for graiax_silkcoder-0.2.7-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cab0aca2bd77367f131b04fad247eb906eb5f838723c5d7980538d462384575 |
|
MD5 | f12f0628bd7a742aee1ec1ddf2ab538c |
|
BLAKE2b-256 | 735a3cd929c328ecadf18a60e7f81bf454202fe50303ba722c0656cd073611a7 |
Close
Hashes for graiax_silkcoder-0.2.7-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74ca3fc78f491701141c3325eda7f3592b56f8d5bab660c96226c736d9960189 |
|
MD5 | 1525ea648b9f5e571b7f6f929d1fa00d |
|
BLAKE2b-256 | a6e7529874b64b2e8cb107345469d0b84fe44f087aa61522de71c5c8d27f0b9c |
Close
Hashes for graiax_silkcoder-0.2.7-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b32254362eb6bbf21d96e880600a71c5fc84cbf658a605707a6e7210e06c44a |
|
MD5 | 5d10973aa8004c6cc96ef93e4a4e6e68 |
|
BLAKE2b-256 | 54be6401036c36f3518cb30ba7196bdca9ef1e2ed5f4aa770acac00dc182fab9 |
Close
Hashes for graiax_silkcoder-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c46e2db4549e249126f1889795f871aa837dc5c95467e45db9ebf7c3be4343f |
|
MD5 | f56687d24e61a7e522b6b2a90867ae22 |
|
BLAKE2b-256 | 212b9317e4ac04ee98c6e0daa0f572d5847810c8d41d85f6689baed9b6b217c0 |
Close
Hashes for graiax_silkcoder-0.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e056966649311a3f4e4e68e073c363a6fd060c6b0ccf01661f170561d1f57700 |
|
MD5 | 6fcaa243ede460e4acade69bc5088857 |
|
BLAKE2b-256 | 806c455993951b294680c67376773d5f080a3c5004fb744542aabd4e04f1fdf3 |
Close
Hashes for graiax_silkcoder-0.2.7-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5610dbadc1b5f2396d6cca83ed51bb3b464bd7a7adee1a7927c065f6f00a9c21 |
|
MD5 | c62b40cccaa01dd3f8c69702d9fe3ee4 |
|
BLAKE2b-256 | 9fe88f6d4884b7721e2d783aa174679a90fb373dda39e9250aff5e84485deddc |
Close
Hashes for graiax_silkcoder-0.2.7-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb1cf7a00d830da0a337e7783b095e20769877701e1cd34a8b244f466531151e |
|
MD5 | b132abe0347144094f7e25f7130247a3 |
|
BLAKE2b-256 | c1def5e51dc9dede6f4237a7cb44be8484eb2651634d5878c3a78751e9792e28 |
Close
Hashes for graiax_silkcoder-0.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f77675d06256b3fa54eef19a30779639651f8f9a2b19e9c67f3b15c05afc97e1 |
|
MD5 | 2f17881e994a85c12382b82038debe0d |
|
BLAKE2b-256 | ec6d02af0d7700f6255a54a63ae37fa6a0f479e7477d5f45a623e646431b865d |
Close
Hashes for graiax_silkcoder-0.2.7-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4781981684146a6943fe32bb4cc0750740f316d85daa6fa004ad797e39268cbe |
|
MD5 | c8f3391b98ca2184ef5b778d0754d461 |
|
BLAKE2b-256 | 0542a08bff649bbd61e759fa23781dbe80f971135a1ca148d2d026f27cbd8b6c |
Close
Hashes for graiax_silkcoder-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bac3699982b41cd9459b3473aa47d71c1750d621f5b5291a7bc9b447f126ee32 |
|
MD5 | 9c7192da62f49cc76c8a542dfd5d0e4d |
|
BLAKE2b-256 | ae91c9df05d35795b404b035c012cb8c35ac180521f6907b18ec4ce4dad63111 |
Close
Hashes for graiax_silkcoder-0.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58dc069d6e7bde397fdcd43a7c2b1a11d4ae8f5fc90072aa9ba386932450ebaa |
|
MD5 | 7df003f6bfbd44bdec663e04f92152c2 |
|
BLAKE2b-256 | 7a09766e4648ea78de2b2e3d6a464ddfaa5821d3f94bb1a47d7c3d58fac2c68f |
Close
Hashes for graiax_silkcoder-0.2.7-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb7bf8d28ecf7a3eb4e396c27e5aca03513f3c534fb2d6bd03ab51db3f7967f7 |
|
MD5 | 2483f7199fb766b37b7455165f4fd89b |
|
BLAKE2b-256 | eae3eadf24648a6aceb550dc1a8d21f9a50e8456fd1c09bbd9b8fef11ccd01c7 |
Close
Hashes for graiax_silkcoder-0.2.7-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87e796bf8daf8436802e64df063c7e548cf7088445a2c0670bfd29ee94fbbebb |
|
MD5 | f1b82eab425a1e06b1aad26eacd42fc2 |
|
BLAKE2b-256 | 76ec7d55c7a0ace69e1c6119a084a3948538866b32d776fb107761726544b1db |
Close
Hashes for graiax_silkcoder-0.2.7-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db3efb0b86f518b1c14a2a99bb1b7970d7c9165935c689be92b7b1a9f660529c |
|
MD5 | 00a97a2bdf4080d453db91aad87679d6 |
|
BLAKE2b-256 | 6afbc25f5db90496ea0a3dd0fabee67f70398afec3180aae52468f8e1b947267 |
Close
Hashes for graiax_silkcoder-0.2.7-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f532695e3525365997a6b5895c7e93db2bd293116bbc4e49c117a048d79c7457 |
|
MD5 | ce4b27f05f12741a58afe0ac2a9541b8 |
|
BLAKE2b-256 | da10ff42d94382857239c25ceae69848b8cd23f826ceac7100c8879f150d1af9 |
Close
Hashes for graiax_silkcoder-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 045eeb205bf075b97ba9215b54326a481a40ca00f6c0d704644f4f9ae8fe1644 |
|
MD5 | e290843e11a553b520c8033ba76fdb92 |
|
BLAKE2b-256 | 8e165c1224596da0aa5378bdbdfdc69c519713d9cdf05e9cb567e0076741fd30 |
Close
Hashes for graiax_silkcoder-0.2.7-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f08349710d2a052a7236e0b59303bb80960327f329d9baee4e7ab806630c28bc |
|
MD5 | f89d5c62254e042eb66f21463f666f4f |
|
BLAKE2b-256 | 6186dce8ec31b69fa05b137e9fadba85adf87ecddcd5082abb7c0b3255177b3d |