Skip to main content

transform audio file to silk

Project description

Graiax-silkcoder

现在版本:pypi
这,是一个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


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)

Uploaded Source

Built Distributions

graiax_silkcoder-0.2.7-cp310-cp310-win_amd64.whl (118.0 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

graiax_silkcoder-0.2.7-cp310-cp310-win32.whl (99.8 kB view hashes)

Uploaded CPython 3.10 Windows x86

graiax_silkcoder-0.2.7-cp310-cp310-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

graiax_silkcoder-0.2.7-cp310-cp310-musllinux_1_1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

graiax_silkcoder-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (492.0 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

graiax_silkcoder-0.2.7-cp39-cp39-win_amd64.whl (118.0 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

graiax_silkcoder-0.2.7-cp39-cp39-win32.whl (99.8 kB view hashes)

Uploaded CPython 3.9 Windows x86

graiax_silkcoder-0.2.7-cp39-cp39-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

graiax_silkcoder-0.2.7-cp39-cp39-musllinux_1_1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

graiax_silkcoder-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (491.8 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

graiax_silkcoder-0.2.7-cp38-cp38-win_amd64.whl (118.0 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

graiax_silkcoder-0.2.7-cp38-cp38-win32.whl (99.8 kB view hashes)

Uploaded CPython 3.8 Windows x86

graiax_silkcoder-0.2.7-cp38-cp38-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

graiax_silkcoder-0.2.7-cp38-cp38-musllinux_1_1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

graiax_silkcoder-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.7 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (491.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

graiax_silkcoder-0.2.7-cp37-cp37m-win_amd64.whl (118.0 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

graiax_silkcoder-0.2.7-cp37-cp37m-win32.whl (99.8 kB view hashes)

Uploaded CPython 3.7m Windows x86

graiax_silkcoder-0.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

graiax_silkcoder-0.2.7-cp37-cp37m-musllinux_1_1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

graiax_silkcoder-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (516.9 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (493.1 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

graiax_silkcoder-0.2.7-cp36-cp36m-win_amd64.whl (125.1 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

graiax_silkcoder-0.2.7-cp36-cp36m-win32.whl (105.7 kB view hashes)

Uploaded CPython 3.6m Windows x86

graiax_silkcoder-0.2.7-cp36-cp36m-musllinux_1_1_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

graiax_silkcoder-0.2.7-cp36-cp36m-musllinux_1_1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

graiax_silkcoder-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (522.8 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.7-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (499.3 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page