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

自定义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.5.tar.gz (203.7 kB view hashes)

Uploaded Source

Built Distributions

graiax_silkcoder-0.2.5-cp310-cp310-win_amd64.whl (116.5 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

graiax_silkcoder-0.2.5-cp310-cp310-win32.whl (98.4 kB view hashes)

Uploaded CPython 3.10 Windows x86

graiax_silkcoder-0.2.5-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.5-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.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (488.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (465.0 kB view hashes)

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

graiax_silkcoder-0.2.5-cp39-cp39-win_amd64.whl (116.5 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

graiax_silkcoder-0.2.5-cp39-cp39-win32.whl (98.4 kB view hashes)

Uploaded CPython 3.9 Windows x86

graiax_silkcoder-0.2.5-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.5-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.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (488.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (464.8 kB view hashes)

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

graiax_silkcoder-0.2.5-cp38-cp38-win_amd64.whl (116.5 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

graiax_silkcoder-0.2.5-cp38-cp38-win32.whl (98.4 kB view hashes)

Uploaded CPython 3.8 Windows x86

graiax_silkcoder-0.2.5-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.5-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.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (488.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

graiax_silkcoder-0.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (465.3 kB view hashes)

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

graiax_silkcoder-0.2.5-cp37-cp37m-win_amd64.whl (116.5 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

graiax_silkcoder-0.2.5-cp37-cp37m-win32.whl (98.4 kB view hashes)

Uploaded CPython 3.7m Windows x86

graiax_silkcoder-0.2.5-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.5-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.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (489.8 kB view hashes)

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

graiax_silkcoder-0.2.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (466.6 kB view hashes)

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

graiax_silkcoder-0.2.5-cp36-cp36m-win_amd64.whl (123.7 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

graiax_silkcoder-0.2.5-cp36-cp36m-win32.whl (104.2 kB view hashes)

Uploaded CPython 3.6m Windows x86

graiax_silkcoder-0.2.5-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.5-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.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (492.0 kB view hashes)

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

graiax_silkcoder-0.2.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (470.6 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