关于 sound-effects-generator
sound-effects-generator 是用于程序化生成音频的 Python 库和命令行工具,适合制作测试音、警报和音频提示。它可生成音调、噪声、DTMF 信号及序列,并支持基础效果和 WAV 或 MP3 导出。
主要功能
- 01正弦、方波、锯齿波和三角波音调
- 02白噪声、粉红噪声和棕噪声
- 03DTMF 音调与序列
- 04多音蜂鸣序列
- 05淡入淡出和音量控制
- 06导出 WAV 和 MP3
适用场景
- 01制作警报和通知声音
- 02生成音频测试音与频率扫描
- 03生成 DTMF 电话号码音频
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill sound-effects-generator安装后在 Claude Code 中输入/sound-effects-generator确认已加载。
附带文件scripts/requirements.txtscripts/sfx_generator.py
详细介绍
音效生成器
以编程方式生成音频:纯音、噪声类型、DTMF 信号和简单音效。非常适合测试、警报、音频提示和占位音效。
快速开始
from scripts.sfx_generator import SoundEffectsGenerator
# Generate a tone
sfx = SoundEffectsGenerator()
sfx.tone(440, duration=1000).save("a440.wav")
# Generate white noise
sfx.noise("white", duration=2000).save("whitenoise.wav")
# Create a beep sequence
sfx.beep_sequence([440, 880, 440], durations=200, gap=100).save("alert.wav")
功能
- 纯音:正弦波、方波、锯齿波、三角波
- 噪声:白噪声、粉红噪声、棕色/红色噪声
- DTMF:电话拨号音
- 序列:多音模式
- 效果:淡入淡出、音量控制
- 导出:WAV、MP3
API 参考
初始化
sfx = SoundEffectsGenerator(sample_rate=44100)
纯音生成
# Pure sine wave
sfx.tone(frequency=440, duration=1000)
# Different waveforms
sfx.tone(440, duration=1000, waveform="sine") # Default
sfx.tone(440, duration=1000, waveform="square")
sfx.tone(440, duration=1000, waveform="sawtooth")
sfx.tone(440, duration=1000, waveform="triangle")
# With volume (0.0 to 1.0)
sfx.tone(440, duration=1000, volume=0.5)
噪声生成
# White noise (equal energy all frequencies)
sfx.noise("white", duration=2000)
# Pink noise (1/f, natural sounding)
sfx.noise("pink", duration=2000)
# Brown noise (1/f^2, deeper)
sfx.noise("brown", duration=2000)
# With volume
sfx.noise("white", duration=1000, volume=0.3)
DTMF 音
# Single digit
sfx.dtmf("5", duration=200)
# Sequence (phone number)
sfx.dtmf_sequence("5551234", tone_duration=150, gap=50)
蜂鸣音序列
# Single beep
sfx.beep(frequency=800, duration=200)
# Multiple beeps (same frequency)
sfx.beep_sequence([800, 800, 800], durations=100, gap=100)
# Melody (different frequencies)
sfx.beep_sequence([523, 659, 784, 1047], durations=200, gap=50)
# Varying durations
sfx.beep_sequence(
frequencies=[440, 880],
durations=[300, 500],
gap=100
)
静音
# Generate silence
sfx.silence(duration=1000)
效果
# Fade in/out
sfx.tone(440, 2000).fade_in(200).fade_out(500)
# Volume adjustment
sfx.tone(440, 1000).volume(0.5)
链式调用
# Combine multiple sounds
sfx.tone(440, 500) \
.silence(200) \
.tone(880, 500) \
.save("two_tones.wav")
保存
# Save to WAV
sfx.save("output.wav")
# Save to MP3 (requires pydub)
sfx.save("output.mp3", bitrate=192)
CLI 用法
# Generate tone
python sfx_generator.py --tone 440 --duration 1000 --output tone.wav
# Generate noise
python sfx_generator.py --noise white --duration 2000 --output noise.wav
# Generate DTMF
python sfx_generator.py --dtmf "5551234" --output phone.wav
# Generate beep pattern
python sfx_generator.py --beeps "800,800,800" --duration 100 --gap 100 --output alert.wav
# With waveform
python sfx_generator.py --tone 440 --waveform square --duration 1000 --output square.wav
CLI 参数
| 参数 | 描述 | 默认值 |
|---|---|---|
--tone | 频率,单位为 Hz | - |
--noise | 噪声类型(白、粉红、棕色) | - |
--dtmf | DTMF 数字 | - |
--beeps | 以逗号分隔的频率 | - |
--duration | 时长,单位为毫秒 | 1000 |
--gap | 声音之间的间隔(毫秒) | 100 |
--waveform | 纯音波形 | sine |
--volume | 音量(0.0-1.0) | 0.8 |
--sample-rate | 采样率 | 44100 |
--output | 输出文件 | 必填 |
示例
警报音
sfx = SoundEffectsGenerator()
sfx.beep_sequence(
frequencies=[880, 1100, 880, 1100],
durations=150,
gap=50
)
sfx.fade_out(100)
sfx.save("alert.wav")
通知提示音
sfx = SoundEffectsGenerator()
# C-E-G chord progression
notes = [523, 659, 784] # C5, E5, G5
for freq in notes:
sfx.tone(freq, 200)
sfx.silence(50)
sfx.fade_out(200)
sfx.save("chime.wav")
白噪声背景音
sfx = SoundEffectsGenerator()
sfx.noise("brown", duration=60000) # 1 minute
sfx.volume(0.3) # Quiet
sfx.fade_in(2000)
sfx.fade_out(2000)
sfx.save("background.mp3", bitrate=128)
DTMF 电话号码
sfx = SoundEffectsGenerator()
sfx.dtmf_sequence("18005551234", tone_duration=180, gap=80)
sfx.save("phone_dial.wav")
测试音扫频
sfx = SoundEffectsGenerator()
# Generate tones from 100Hz to 1000Hz
for freq in range(100, 1001, 100):
sfx.tone(freq, 200)
sfx.silence(50)
sfx.save("sweep.wav")
常用频率
| 名称 | 频率(Hz) |
|---|---|
| A4(标准音高) | 440 |
| 中央 C(C4) | 261.63 |
| C5 | 523.25 |
| 标准拨号音 | 350 + 440 |
| 忙音 | 480 + 620 |
音符(A4 = 440Hz)
| 音符 | 频率 |
|---|---|
| C4 | 261.63 |
| D4 | 293.66 |
| E4 | 329.63 |
| F4 | 349.23 |
| G4 | 392.00 |
| A4 | 440.00 |
| B4 | 493.88 |
| C5 | 523.25 |
依赖项
numpy>=1.24.0
scipy>=1.10.0
soundfile>=0.12.0
可选:pydub(用于导出 MP3)
限制
- 不支持复杂合成(不支持 ADSR 包络)
- 不支持立体声声像
- 仅支持基本波形
- 导出 MP3 需要 pydub + FFmpeg
评论
支持 Markdown