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 转换成 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")
使用方法
同步情况下
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.8.tar.gz
(204.7 kB
view hashes)
Built Distributions
Close
Hashes for graiax_silkcoder-0.2.8-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | beec8dcdf6344c9487323acf21c75e5e938deee1303f2134be99d4c0a3e52f62 |
|
MD5 | 1b4896fb7b4929bdabf3816f58711930 |
|
BLAKE2b-256 | 864410da72228d8feb5136a6b12bcc688e28e3e68b48eb1603ed4e848bf26f3a |
Close
Hashes for graiax_silkcoder-0.2.8-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca8db9b241c42efbfd125018c77f5dacbd0994b56acee2a9c4a0947b723bb5f6 |
|
MD5 | d16b4e0436850c4ac51c9280fdfc2c1d |
|
BLAKE2b-256 | cefa8757c4aab7950e9532e638b0dca50308f0e1d1c48d1973931db92dca2742 |
Close
Hashes for graiax_silkcoder-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c12d1e72a1e35368b873281378ef4a3a734a9389531a81dbb1da08db77457fa7 |
|
MD5 | d8be1bc171eae2fa7aadc5d38192b612 |
|
BLAKE2b-256 | bd1038925cb40db60d231f60c4a071e61f976a7f905e12161b07932a6beb2185 |
Close
Hashes for graiax_silkcoder-0.2.8-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86ec7f08b05b73b2801ca4c897cc1018e516d60c2cfca249db1b348a6bb558f4 |
|
MD5 | 5a4ea76e813e3bb7767f6e797f043645 |
|
BLAKE2b-256 | 61547f4078f799f051a812f4f2fbd35605162b6e89c98a2111e6e7118065397c |
Close
Hashes for graiax_silkcoder-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24d7c528abd439617380c1d951da92b1c99f951de5a53c6fd8e76161fbd63bb5 |
|
MD5 | 4aa4c93c066b28a6633ae5ef4b0721db |
|
BLAKE2b-256 | e51b51b8df2c005e2aef65e10e86eeeffc5057918ce483d5cc6eb534b0a22b6c |
Close
Hashes for graiax_silkcoder-0.2.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7b1103bde90446430de22dc842a6e008bfc2f5d017e7dad648533e77b906bcb |
|
MD5 | 507321024be1bafef8ad96804e685074 |
|
BLAKE2b-256 | 863d21c5d97560f55091bbdd7d6d577bdd9e9658ff628d41a53f1e6ea5f315e2 |
Close
Hashes for graiax_silkcoder-0.2.8-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99524c1a9a1f34a0a4b6406af1e2ea5a65c707848e98d54f1b300c875d5c7c64 |
|
MD5 | ffaae421aea3dcbeeab6241a6a442eb6 |
|
BLAKE2b-256 | bccfeefff7566e53c486a39b1d96299524f50c8a2185abdcb440e4768ba913d5 |
Close
Hashes for graiax_silkcoder-0.2.8-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 688cb8e935d4cb7a50af0998e39f134c0c10b8f0244ad3d5a65b2d23ba913018 |
|
MD5 | 66b34ac64441e0dd29ba3256a25d7918 |
|
BLAKE2b-256 | 2699c9e67e8030b2803a8d760b5e0c6e4e686aca5b884dddd3009acac94322d4 |
Close
Hashes for graiax_silkcoder-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8960a99168acd0b482bee25715bb24d8e327ce1def96c96545e63b40942f3f1 |
|
MD5 | 5dffcbde4cbbe36f39eefe399fb6d77b |
|
BLAKE2b-256 | c5576b6f17f23c748c0826e4225532d1f6b6c4b2bdeb951e03ef94176cf32f9e |
Close
Hashes for graiax_silkcoder-0.2.8-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 516f10175fae51b14aad01c994dc12ff0080db04c3071f3d6b3e3c66a8b3f81e |
|
MD5 | 90eaec2d81eaccab9b980a2f66ad6839 |
|
BLAKE2b-256 | a0ac68da279c79d12c0526c78f0c98860e2ea989f7fd77a4eb8f4267025b363a |
Close
Hashes for graiax_silkcoder-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abdd95e2496649e1da9f4123b5e64df53810d8c845efe15cc0ba1d7ce08b9538 |
|
MD5 | f7df2ef923547ac83781528ea7db89da |
|
BLAKE2b-256 | f506a3263025173b6f24cb2e6d9c3a203e658b66cd817cbcf42bb1b19aa1240f |
Close
Hashes for graiax_silkcoder-0.2.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8def389a453726f1784946278d7b7c69481f8db457ba6930f2b1c5c8582a122a |
|
MD5 | efaf22375415ae8c6c093142080d65fe |
|
BLAKE2b-256 | 0d0803ef2340733d143c90de01064f20bbc8e8200885c80ca22a18547159b747 |
Close
Hashes for graiax_silkcoder-0.2.8-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a016fd9716c6d3d65cea21e54f17f3ef6f10d1730cf37de93533fea6c607338e |
|
MD5 | 8df08cc91fb0daf7e92a9aae24ec5134 |
|
BLAKE2b-256 | 8a79b220352cdfbf150241135d0626a23262be64c4020eae029c866fa110aaef |
Close
Hashes for graiax_silkcoder-0.2.8-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc8f2ca5c2c353fa54112b27e2340021313dea9797b2691baa02b8337ac8fd74 |
|
MD5 | 1521874fa2ffda7dc3650a6f6efa23c8 |
|
BLAKE2b-256 | d1d0a24b9ebb6facaca2989feb22f613e9755cb3c2a3edacf8cc13565111a477 |
Close
Hashes for graiax_silkcoder-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d90fba0d0186692a4ef0cc370581c4cb5abbf132641bfc1712e0fa2efc5c5300 |
|
MD5 | 894fa9bf4c2e54e13c48682fb6e71df7 |
|
BLAKE2b-256 | c02b7b003d759680614bbf8d5ecc59c21620f79233e53df6dd95679798f138d6 |
Close
Hashes for graiax_silkcoder-0.2.8-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c29fd2ff7bea1f78f478de8d3f4f99607de4c05275b535592a5ef26d0fa3efa8 |
|
MD5 | 6efd4dfa9b49b72ab00663dbb20de8c0 |
|
BLAKE2b-256 | ab092966e7123ef663d159b03c9fa710b9f1ba6da1fd4dff4c42daa6bac04eee |
Close
Hashes for graiax_silkcoder-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09fe17a3734a99c83cc5ab22015161fe4cbb6e68df60a009e87f758dca8fed25 |
|
MD5 | 861fb850581d0bec01c1f3bcc134e6eb |
|
BLAKE2b-256 | 43b8b04a309bcd98f92def16641474a387b908bbcdc8779a6bed9712c730794a |
Close
Hashes for graiax_silkcoder-0.2.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba5d6f0294ed8a35b4c7f9ae6d136e057b0d9fa397472234e20148eb29dec092 |
|
MD5 | 06e789feb4aa70004c0d4d0bdb4d18a1 |
|
BLAKE2b-256 | 0f04fcbd20bd39874830b07b84805de9ad75bd1ab7bed81de1b21edc8f6435bb |
Close
Hashes for graiax_silkcoder-0.2.8-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbfb1b40dd5406f5b10c87537caa8aa909d6adecbba8222e89676ee213bf34f7 |
|
MD5 | 3a660f533d2c9b38f9adfcfe61702689 |
|
BLAKE2b-256 | f84f1bc66ad7f0ee7d3ff6c2a2514e138744a52fc7adb2bf489fc80a8500bff7 |
Close
Hashes for graiax_silkcoder-0.2.8-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9615de307608d1692d2a5497fa543deaba09340febd80c62b34cc2f0f6c7e11 |
|
MD5 | 06bdb31e861a1de714886e23c1b27a5c |
|
BLAKE2b-256 | ae96e1c211e72bc31cc4546e0b7bbf90c3b160cfdf23d3655ec4f525269008b1 |
Close
Hashes for graiax_silkcoder-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4eb6d05625ee52cb36eef474794f447a6b615265aa25243ef2b5e2c2e0648a4b |
|
MD5 | 8ada2c792e8c96531f73cfff593a09ee |
|
BLAKE2b-256 | 61dc7ad01ade8181f311af2bfcdf42c6f200423c042f943e4a5a9992d5041161 |
Close
Hashes for graiax_silkcoder-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc370182cd9c059535da596fa74bf1b79679e72f919e5b26b3e75b78fc879db6 |
|
MD5 | fb7c90caeea15d77b2fa576edad56329 |
|
BLAKE2b-256 | 0f3484b72fb32567ca56cddbddb1df500b6aa32823492126c167cd0c6ed51be9 |
Close
Hashes for graiax_silkcoder-0.2.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22e7cd2c877f07ba4f205f02f65bef36c78629f229c806362b6cd12a2fb90ee8 |
|
MD5 | 29eb0102cbf800257191d86ba2f9bee7 |
|
BLAKE2b-256 | a008e3c0d86f68809c9d7370f1e7d10893136252a0827e9b0f6da7ba3f2d54dc |
Close
Hashes for graiax_silkcoder-0.2.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f002b814c8d8311476139b802b0c7bd3f9f570f426d771549028f511c4f497a |
|
MD5 | 6b09cd354dc3f839ff814543803654be |
|
BLAKE2b-256 | 6e9895bcda128d0cb976779b4084d65306b17db7a1ae79ef08c51f3cab9ee21d |
Close
Hashes for graiax_silkcoder-0.2.8-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85de7ec97ab8539f3d4f48841380337749bfbdaf69e68570a614ebf4b953be61 |
|
MD5 | 3cdcbdce6506960bf80391066db042dd |
|
BLAKE2b-256 | a451bd6b8884f00e72c59739f80476b71d9a68a1d03a4df1eb3fd640b758e30e |
Close
Hashes for graiax_silkcoder-0.2.8-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf47ac5b514bdc32eb492a38bc29f4087a050e4ec1e46c3b5f8a65054c2792f5 |
|
MD5 | 4c379d8cb8461aa1e9ad1897096e61d2 |
|
BLAKE2b-256 | 202a1a8391e71b9656ad2c7affe16fe2c681d077a640c5491216b7e319fddcb3 |
Close
Hashes for graiax_silkcoder-0.2.8-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf81c300d888abdffdeb65330c4a65ba4e277338663552f3044b18cebbe38882 |
|
MD5 | 431f2180324ddc8cb41e1112500de56a |
|
BLAKE2b-256 | ccc73fb745cc996e4a4606be36e2904538f104a63069ad53b35e083e799bb5f6 |
Close
Hashes for graiax_silkcoder-0.2.8-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b4109742eb21c683dd8ccd9a56b5312e8f8e13f87b5b8aa38f44431c9a694c4 |
|
MD5 | ba908747b52a8deb610824e0d807fb8d |
|
BLAKE2b-256 | 1aefebb0bd3853cdf4f3aecf141e8d27a8ac59a2416e4d0247d974e5fbf821b6 |
Close
Hashes for graiax_silkcoder-0.2.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65d0af7b70ede53c456c6741e509e1bc9c7d1386632c27470fc99908a6b4e11a |
|
MD5 | 0ce36b8baca90e281cfe9e27d5f86485 |
|
BLAKE2b-256 | 719a70518d0cb75f0d110c45ec5df2eb5ffe54857bce9f7e52267bdad036475a |
Close
Hashes for graiax_silkcoder-0.2.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7ea9e9f79e7842d813f2054a758f5be3f38ce371d7c9eab5ef0a005b4830d05 |
|
MD5 | b8c30b61a840cee22b38e5722646239a |
|
BLAKE2b-256 | ce9762522e02f968aaf5bddf7a154c46f595f86bb87f3340aac2fa0267ed3ff9 |