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.6.tar.gz
(204.5 kB
view hashes)
Built Distributions
Close
Hashes for graiax_silkcoder-0.2.6-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4658482fbee8a2b4a419268976fd88315bea31bcc19d8bc7408fd7974265dd2 |
|
MD5 | 9e2db8f0e158b1da8954c0bdfba6da0d |
|
BLAKE2b-256 | ff2c90a6abd4d82d643aff15776b7bd85f50892fb11ae417d42c0f32c7cbf47e |
Close
Hashes for graiax_silkcoder-0.2.6-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ac5281fba1689203de62f30168e1bce65bdcf579d838ded67c18fba95725a3e |
|
MD5 | 6157ccb0f8ec8dd793d3a159ceb9cdcc |
|
BLAKE2b-256 | 5587d20c71958aa8827168a1ac5b339a50ab14d27d3e772ed6f7dcae9bc59ba6 |
Close
Hashes for graiax_silkcoder-0.2.6-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36389a4c0b87267850acd80f43afc53feede675e543f8de4fcdf465bfd53a05f |
|
MD5 | b39101b4119898f5cfc2d4b3e4e485b2 |
|
BLAKE2b-256 | b4d3f79f1f801bb2d2da673c8b69fc8b4e80229f9e5393c462834a08eea3b8f7 |
Close
Hashes for graiax_silkcoder-0.2.6-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7306628790970dd23a0955e8ddf0cb1f7d21d75d4d8b833490b1019a29f35588 |
|
MD5 | f7f894109782c64397f56110be5b3510 |
|
BLAKE2b-256 | aafd4c2854a826dbdf11d40821c95eaf91ffcd70522cfc79d71c53ffd32f01e4 |
Close
Hashes for graiax_silkcoder-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46e953ca81eb08ccc2ac760ac123a9ba63b8d9c10ef03ba38cfdf537c5b2d719 |
|
MD5 | d774a6982adb99b43c36792e340ba76b |
|
BLAKE2b-256 | cd23a087a268b7706fd00993d4860205c525ab12e99ef1ea8406c1ec1db84b11 |
Close
Hashes for graiax_silkcoder-0.2.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b2c1802c0ad96f89d367c2ef785cc74eeb8ed6a335e931c31768334c9b72e93 |
|
MD5 | 0cc7b0e53575c016b345cd3a29883a85 |
|
BLAKE2b-256 | 1e3f71c63d920a468fe68a618f4519c4d467a3a49d3206914903db7434c74094 |
Close
Hashes for graiax_silkcoder-0.2.6-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02bd813c594463b4305f95deead74c4f402fba2b7540ffcaf6eb4332ab158774 |
|
MD5 | c6cfeadb36a8d434bc1a79a8dc40c63c |
|
BLAKE2b-256 | 59e6ea7364e91d38bf66b48a4e2997e953b462776e175807c5da34500a9c6914 |
Close
Hashes for graiax_silkcoder-0.2.6-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08d24785fab665d796e1e7d5145dbc60e8ad4c5e668d6c533139b8b8e563c0d2 |
|
MD5 | f63eb13dca04994c72c12b0a3e172a13 |
|
BLAKE2b-256 | 8fe82c67207d2bef8f8279be6324b8fc3c78141faad8c3435c8921f60d3957ee |
Close
Hashes for graiax_silkcoder-0.2.6-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f90c3ba1b91c3e9b425228cc639b9962fa8ef0aaf188836474cde6b2211060f |
|
MD5 | c04f671313d7eed8521e6d062e3f1961 |
|
BLAKE2b-256 | 809b222707b56ea8179cd8cd9090c17458861d8336620047b8ec9bd4fd281260 |
Close
Hashes for graiax_silkcoder-0.2.6-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77813222b22a43c92bf669ac648c73f754302c33c3caaa42607c59dc68b3b8db |
|
MD5 | 0b31d5ed229a9b74a32c7d6e6a9b2fb4 |
|
BLAKE2b-256 | a96f75f6dc4dfc7b82c97852bf72ce3012d4cd161220803bee281c881cceeee9 |
Close
Hashes for graiax_silkcoder-0.2.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 136826824c150e82631f8bed9d0472f5f6a5abb15ca779361b666e8aee413f46 |
|
MD5 | e4fb1dc5403862fed615d758a195592a |
|
BLAKE2b-256 | 1fb770e5594247996b54e3407e361a515ce599eaad07396f0b79b85446c37447 |
Close
Hashes for graiax_silkcoder-0.2.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80d8754f21ed9ddc9f6bc9ae98d24468181df3e741e17ed488bc75de6533e8fe |
|
MD5 | 886f9fb33b30b5fcd9f7c58ebae1e6e7 |
|
BLAKE2b-256 | 7fd3a1f2977098d9aaedff7ca4758b07e1efb1637b8b9a118d7f5107677bc407 |
Close
Hashes for graiax_silkcoder-0.2.6-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcbc1f8ffc659160a67ab77297b032d9745528527cc97173cadd31d0c1bb282e |
|
MD5 | 4abc10c03232b2ae24168c3c9a608d0b |
|
BLAKE2b-256 | a99acec984dcfca23c29ae88ed8978aaee57e44e6b6625001b0ca907fec5a0b4 |
Close
Hashes for graiax_silkcoder-0.2.6-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd9df8e262c86235f4f89c63258040ec3adbe0b0c8532cce7fcba438cb35045b |
|
MD5 | f9a091339a442b1db29c41116b173c90 |
|
BLAKE2b-256 | b43988f38cb6e746ebb3f9296305af9debe6f60430000672fee43f14b643959f |
Close
Hashes for graiax_silkcoder-0.2.6-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c38cb9094b7cde21738b59441c85ee4aef814792a2c1e607fa6826963b1160f |
|
MD5 | 6011e58a593f705a92189e2e5ef33614 |
|
BLAKE2b-256 | 74c06f9e5f02f211e420911c8e50b32154ba0ce12eef9c74089e6b11f3bb4fc4 |
Close
Hashes for graiax_silkcoder-0.2.6-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4044cda839cee2e1ddbd2594a3e85a4c9e7f271b6c0f120988f5d5f0d50035e |
|
MD5 | 5a392c49a0100db0cc236ae31daaf5b6 |
|
BLAKE2b-256 | 49c9375feb56c5dc50360d4999853c9f7eb7c37a745f261de554059785ce07fc |
Close
Hashes for graiax_silkcoder-0.2.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d52770d783a9cce930d844760229add3536611944ca2cf94b692130b7fe6f74 |
|
MD5 | c7179e220c30f9f14b3806f6c09cfb3b |
|
BLAKE2b-256 | 8482f7e4ded2883c900429b82868eef599bebcb9b74cc8f82ccfe7a9447894bd |
Close
Hashes for graiax_silkcoder-0.2.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8ca55f7dcbdb0a80d86a4e1454ebe7185ce4e541233ec2e725ca38270ef04ca |
|
MD5 | 65064bd510193949093a9aabbccb92d6 |
|
BLAKE2b-256 | 2b97d08fb78a7b7d6b94ef020ad9d095d5121f9e7d4ba83e2eeedb75e1db7cc2 |
Close
Hashes for graiax_silkcoder-0.2.6-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb97fe87789b1908504a6e9460d90c9cd5fbf6d16202e43d4b9d15afdb015c5a |
|
MD5 | 52e591c374b8d2a4d5feefbcc38b69b3 |
|
BLAKE2b-256 | 5b22bc199802a8df3b83e10cffdcc551b412987b203ad9b038ea4a4583564a44 |
Close
Hashes for graiax_silkcoder-0.2.6-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bff7d784dca5db9e540588561cdadd3acd6efd228b14ddc2d0cfa848aa9c1eb |
|
MD5 | bd6b613d5889f8b0da758e70150b7001 |
|
BLAKE2b-256 | 7ca08b8a6164c02a1905467d9a733cf7939e18c2ac1a9e914a4fe2fd689a3f0c |
Close
Hashes for graiax_silkcoder-0.2.6-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5719b0a84bc99c28dc3238f7c693c6c62626277185d67572eec6d2cd4358115c |
|
MD5 | 0d1a6ddc22bf12dc835cdd33713402ae |
|
BLAKE2b-256 | f2579b45332608b98a614fcef71ed5aeecf17dfc516f04609b081db9658a9fdf |
Close
Hashes for graiax_silkcoder-0.2.6-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c7673cd66412568817a8d1e159fee321a42016f0789e3bb4d24c79d6e9cc080 |
|
MD5 | 95514ed54e6fb8f2926f67ff8fe35b4e |
|
BLAKE2b-256 | 2c8df990fea2e002389aa1c9ab53f1b70bc0b6dc78878e42ecde3c7ef612c1ef |
Close
Hashes for graiax_silkcoder-0.2.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81ec7491507ab99cf232bdee0eda00e1bf8d0beeec26411cbeef3a694dfc4e3e |
|
MD5 | af48503a7f9a30b3d0e161fa00b3aa65 |
|
BLAKE2b-256 | f9b8f9b4b5c84de8b86f5d5b2775779e825c82192b32add6b903c609a18afcd9 |
Close
Hashes for graiax_silkcoder-0.2.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 984b8f6be6420b231b230f500f86bca99cf51ce7ca12fb3bead9e11ce92a0d47 |
|
MD5 | 76cdbd1d5b4f5ce5ae806151667e08d1 |
|
BLAKE2b-256 | f85f1ee1f4a1347832ef2f48fcca8168bdf75a36aba492615b8f5124b61cbc51 |
Close
Hashes for graiax_silkcoder-0.2.6-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56164ee29c2b46ec4168bf988e77a39176fc02ff4c30b6bbcd2c1811cd37698d |
|
MD5 | 1cddef6ba69add776cdce198680bf1b5 |
|
BLAKE2b-256 | d6bbf2e107aae112e8510792b4641f79d6bb3b4a9daa9f3ca54760863bd7b877 |
Close
Hashes for graiax_silkcoder-0.2.6-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e4eacdc805d8ce1e2a53d840e7f1684b4c46a76adad9e699f0b56b1e6e506b3 |
|
MD5 | f6bd88cb79cc234bcebd32978be428f1 |
|
BLAKE2b-256 | c0fe713c6a6662037f2ca316d6cbece390418bf2d69f34b41d66cbe56ba8caeb |
Close
Hashes for graiax_silkcoder-0.2.6-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 369c0d6c51857ec98a4fd10348f8ecedfcd0684badc0325089d8725bf17659e6 |
|
MD5 | b77fbdaa7d00010378f7ffa6a3200beb |
|
BLAKE2b-256 | b34c90d792c1d490b475681775357202f9e1331e5df1e9fde82c6165f8b6c275 |
Close
Hashes for graiax_silkcoder-0.2.6-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a7df04cc6286eb51c2b3513261b8ca415c4fb1b3ebcf94586e50df01041f304 |
|
MD5 | 73053d44fdfa28f3c7219be60e4fbf6c |
|
BLAKE2b-256 | 12cfef6674a5955b3eb7967c08413045e91feec2f0286a9f01c55348d276afc7 |
Close
Hashes for graiax_silkcoder-0.2.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eca5dda5d86680dfa4b53d8b43566c7a52765ee1ad8f715ca1a2af3385cac16e |
|
MD5 | 10ea013fd5abf1f9756c1394e7b79c97 |
|
BLAKE2b-256 | 0e705e0f8c8a3fae27f78dbed2c8c80caf958650c9022c3d2474cda9f6eb47de |
Close
Hashes for graiax_silkcoder-0.2.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 760632dfb2d14c8e5f4e308a80fc2be639cac3244d7d821b29c8a3b81460ad81 |
|
MD5 | 8b6e24b4821d070539500dbeaaa5f500 |
|
BLAKE2b-256 | 73738b6546ab7086fdf7607ff527ddfa266e29d937fe070a3178e5e2376d3e1e |