Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
streamlit-advanced-audio
Advanced tools
Advanced audio player component for Streamlit with waveform visualization and region selection
While the original audio
component in Streamlit provides basic audio playback functionality, it lacks advanced features such as style customization and current playback time tracking.
Feature | audix | st.audio |
---|---|---|
Waveform Visualization | ✅ | ❌ |
Custom Time Region | ✅ | ❌ |
Playback Status | ✅ | ❌ |
Custom Appearance | ✅ | ❌ |
Multiple Format Support | ✅ | ✅ |
URL Support | ✅ | ✅ |
File Upload | ✅ | ✅ |
The audix
component, built with react
, wavesurfer.js
, and ant design
, offers the following features:
[!NOTE]
audix
meansaudio
+extra
streamlit.audio
component APIcurrentTime
)selectedRegion
)❌ Current limitations:
Refer to: advanced-audio-example.streamlit.app
Local installation:
git clone https://github.com/keli-wen/streamlit-advanced-audio
cd streamlit-advanced-audio
pip install -e .
PyPI installation:
pip install streamlit-advanced-audio
from streamlit_advanced_audio import audix
# Play local file
audix("path/to/your/audio/file.wav")
# Play from URL
audix("https://example.com/audio.mp3")
# Play NumPy array
import numpy as np
sample_rate = 44100
audio_array = np.sin(2 * np.pi * 440 * np.linspace(0, 1, sample_rate))
audix(audio_array, sample_rate=sample_rate)
from streamlit_advanced_audio import audix, WaveSurferOptions
options = WaveSurferOptions(
wave_color="#2B88D9", # Waveform color
progress_color="#b91d47", # Progress bar color
height=100, # Waveform height
bar_width=2, # Bar width
bar_gap=1 # Gap between bars
)
result = audix(
"audio.wav",
wavesurfer_options=options
)
# Get playback status
if result:
current_time = result["currentTime"]
selected_region = result["selectedRegion"]
is_playing = result["isPlaying"]
st.write(f"Current Time: {current_time}s")
st.write(f"Is Playing: {is_playing}")
if selected_region:
st.write(f"Selected Region: {selected_region['start']} - {selected_region['end']}s")
from streamlit_advanced_audio import audix, CustomizedRegion, RegionColorOptions
# Customize regions style
region_colors = RegionColorOptions(
interactive_region_color="rgba(160, 211, 251, 0.4)", # Interactive region color
start_to_end_mask_region_color="rgba(160, 211, 251, 0.3)" # Start time to end time mask color
)
# Add custom regions (read-only)
custom_regions = [
CustomizedRegion(start=6, end=6.5, color="#00b89466"), # Use hex color (with transparency)
CustomizedRegion(start=7, end=8, color="rgba(255, 255, 255, 0.6)") # Use RGBA color
]
result = audix(
"audio.wav",
start_time=0.5,
end_time=5.5,
mask_start_to_end=True, # Show start_time to end_time mask
region_color_options=region_colors, # Set region color
customized_regions=custom_regions # Add custom read-only region
)
audix(
"audio.wav",
start_time="1s", # Supports various time formats
end_time="5s",
loop=True, # Enable looping
autoplay=False # Auto-play setting
)
This project is based on the Streamlit Component Templates.
For development details, please refer to the Quickstart section.
Here is the development guide:
cd streamlit-advanced-audio
python -m venv venv
source venv/bin/activate
pip install streamlit # Install streamlit
cd streamlit-advanced-audio/frontend
npm install # Install npm dependencies
npm run start # Start Webpack development server
__init__.py
中的 _RELEASE
to False
):cd streamlit-advanced-audio
. venv/bin/activate # Activate your previously created virtual environment
pip install -e . # Install the component package
streamlit run example.py # Run the component
streamlit-advanced-audio/frontend/src/
streamlit-advanced-audio/__init__.py
[!IMPORTANT] You can use the following command to build and lint the project:
cd streamlit-advanced-audio/frontend npm install npm run build cd ../../ bash lint.sh # **For** py and tsx code lint.
Pull requests for further improvements are welcome!
This project builds upon several excellent open-source solutions:
原始 streamlit 中的 audio
组件提供了基本的音频播放功能,但是缺乏一些高级的特性,比如缺乏样式定制,无法获取当前播放的时间等。
Feature | audix | st.audio |
---|---|---|
Waveform Visualization | ✅ | ❌ |
Custom Time Region | ✅ | ❌ |
Playback Status | ✅ | ❌ |
Custom Appearance | ✅ | ❌ |
Multiple Format Support | ✅ | ✅ |
URL Support | ✅ | ✅ |
File Upload | ✅ | ✅ |
audix
(audix
是 audio
+ extra
的缩写) 组件基于 react
,wavesurfer.js
和 ant design
开发,提供了如下的功能:
streamlit.audio
组件的 API。currentTime
)selectedRegion
)❌ 目前可能存在的不足之处:
可参考: advanced-audio-example.streamlit.app
从本地安装:
git clone https://github.com/keli-wen/streamlit-advanced-audio
cd streamlit-advanced-audio
pip install -e .
从 PyPI 安装:
pip install streamlit-advanced-audio
from streamlit_advanced_audio import audix
# 播放本地文件
audix("path/to/your/audio/file.wav")
# 播放URL音频
audix("https://example.com/audio.mp3")
# 播放NumPy数组
import numpy as np
sample_rate = 44100
audio_array = np.sin(2 * np.pi * 440 * np.linspace(0, 1, sample_rate))
audix(audio_array, sample_rate=sample_rate)
from streamlit_advanced_audio import audix, WaveSurferOptions
options = WaveSurferOptions(
wave_color="#2B88D9", # 波形颜色
progress_color="#b91d47", # 进度条颜色
height=100, # 波形高度
bar_width=2, # 条形宽度
bar_gap=1 # 条形间距
)
result = audix(
"audio.wav",
wavesurfer_options=options
)
# 获取播放状态
if result:
current_time = result["currentTime"]
selected_region = result["selectedRegion"]
isPlaying = result["isPlaying"]
st.write(f"当前播放时间: {current_time}秒")
st.write(f"是否正在播放: {isPlaying}")
if selected_region:
st.write(f"选中区域: {selected_region['start']} - {selected_region['end']}秒")
from streamlit_advanced_audio import audix, CustomizedRegion, RegionColorOptions
# 自定义区域颜色
region_colors = RegionColorOptions(
interactive_region_color="rgba(160, 211, 251, 0.4)", # 交互式区域颜色
start_to_end_mask_region_color="rgba(160, 211, 251, 0.3)" # start_time 到 end_time 的蒙版颜色
)
# 添加自定义只读区域
custom_regions = [
CustomizedRegion(start=6, end=6.5, color="#00b89466"), # 使用十六进制颜色(带透明度)
CustomizedRegion(start=7, end=8, color="rgba(255, 255, 255, 0.6)") # 使用 RGBA 颜色
]
result = audix(
"audio.wav",
start_time=0.5,
end_time=5.5,
mask_start_to_end=True, # 显示 start_time 到 end_time 的蒙版
region_color_options=region_colors, # 设置区域颜色
customized_regions=custom_regions # 添加自定义只读区域
)
自定义区域功能支持:
mask_start_to_end=True
在 start_time 和 end_time 之间显示蒙版。audix(
"audio.wav",
start_time="1s", # 支持多种时间格式
end_time="5s",
loop=True, # 循环播放
autoplay=False # 自动播放
)
本代码基于 Streamlit Component Templates 开发。
具体可以参考关键的章节 Quickstart。
这里给出简易的开发流程:
cd streamlit-advanced-audio
python -m venv venv
source venv/bin/activate
pip install streamlit # 安装 streamlit
cd streamlit-advanced-audio/frontend
npm install # 安装 npm 依赖
npm run start # 启动 Webpack 开发服务器
__init__.py
中的 _RELEASE
设置为 False
):cd streamlit-advanced-audio
. venv/bin/activate # 激活你之前创建的虚拟环境
pip install -e . # 安装组件包
streamlit run example.py # 运行组件
streamlit-advanced-audio/frontend/src/Audix.tsx
。streamlit-advanced-audio/__init__.py
。如果你有进一步的优化建议,欢迎提交 PR。
本项目的使用基于许多优秀的开源方案,在此特别感谢:
FAQs
Advanced audio player component for Streamlit with waveform visualization and region selection
We found that streamlit-advanced-audio demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.