mcpField
S
sound-effects-generator

sound-effects-generator

github.com/dkyazzentwatwa创意与媒体12476 次安装29 周前更新
代码仓库

关于 sound-effects-generator

sound-effects-generator 是用于程序化生成音频的 Python 库和命令行工具,适合制作测试音、警报和音频提示。它可生成音调、噪声、DTMF 信号及序列,并支持基础效果和 WAV 或 MP3 导出。

主要功能

  1. 01正弦、方波、锯齿波和三角波音调
  2. 02白噪声、粉红噪声和棕噪声
  3. 03DTMF 音调与序列
  4. 04多音蜂鸣序列
  5. 05淡入淡出和音量控制
  6. 06导出 WAV 和 MP3

适用场景

  1. 01制作警报和通知声音
  2. 02生成音频测试音与频率扫描
  3. 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噪声类型(白、粉红、棕色)-
--dtmfDTMF 数字-
--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
C5523.25
标准拨号音350 + 440
忙音480 + 620
音符(A4 = 440Hz)
音符频率
C4261.63
D4293.66
E4329.63
F4349.23
G4392.00
A4440.00
B4493.88
C5523.25

依赖项

numpy>=1.24.0
scipy>=1.10.0
soundfile>=0.12.0

可选:pydub(用于导出 MP3)

限制

  • 不支持复杂合成(不支持 ADSR 包络)
  • 不支持立体声声像
  • 仅支持基本波形
  • 导出 MP3 需要 pydub + FFmpeg

评论

支持 Markdown