用于处理音频剪辑的基于生成器的工具。

audiogen的Python项目详细描述


audiogen包提供时域音频处理工具 使用python生成器。

这使得一些类型的音频样本生成和处理变得非常漂亮 简单:

# mix 440 Hz and 445 Hz tones to get 5 Hz beating
beats = audiogen.mixer(
        (audiogen.tone(440), audiogen.tone(445)),
        [(constant(1), constant(1)),]
)

实际的样本只有在 实际消耗量–例如,当它们被写入磁盘时 在wave文件中:

with open("output.wav", "wb") as f:
    audiogen.sampler.write_wav(f, beats)

生成器的消耗时间计算也允许创建 无限长的输出,例如流到扬声器而不是文件 磁盘:

audiogen.sampler.write_wav(sys.stdout, audiogen.tone(440))

或者只是:

audiogen.sampler.play(audiogen.tone(440))

您还可以使用标准的生成器工具(如itertools模块)来 处理音频数据:

    beep_silence = itertools.chain(audiogen.beep(), audiogen.silence(0.5))
    infinite_beeps = itertools.cycle(beep_silence)

audiogen.sampler.write_wav(sys.stdout, infinite_beeps)

声卡输出

直接播放声卡输出的最简单方法是使用 audiogen.sampler.play函数,它将使用 pyaudio:

import audiogen
import itertools
import sys

audiogen.sampler.play(
    itertools.cycle(itertools.chain(audiogen.beep(), audiogen.silence(0.5)))
)

或者,您可以将wave数据写入stdout,例如myaudio.py

import audiogen
import itertools
import sys

audiogen.sampler.write_wav(
    sys.stdout,
    itertools.cycle(itertools.chain(audiogen.beep(), audiogen.silence(0.5)))
)

然后通过管道连接到命令行音频播放器,如Sox

python myaudio.py | play -t wav -

安装

安装时使用:

$ pip install audiogen
$ pip install --allow-external PyAudio --allow-unverified PyAudio PyAudio

pyaudio是可选的。如果未安装,则通过声卡播放音频 audiogen.sampler.play()将不可用,但将生成wave文件- 包括到外部播放器的管道,比如sox-可以很好地工作。

请注意,要在Mac OS X上安装PyAudio,您需要首先安装Portaudio

$ brew install portaudio

另请参见

使用audiogen

生成的项目
  • koch,科赫方法莫尔斯电码训练器和音频发生器
  • afsk,一台ham无线电aprs/bell-202音频移位键控编码器

贡献

获取源代码并报告github上的任何错误:

https://github.com/casebeer/audiogen

版本历史记录

  • 0.1.2-添加带通和带阻IIR滤波器;来自@jhobbs的自定义蜂鸣长度
  • 0.1.1固定的多路复用错误导致在使用Mixor()时产生音高的增加 多个输出通道
  • 0.1.0-中断更改:默认情况下将新参数设置为tone(),play()块

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java exoplayer启用视频字幕   java在读取RSS源时“1字节UTF8序列的1字节无效”   在Array Android Java中维护最新的5个用户?   swing命令在Java actionperformed中运行了两次   使用java将数据从cassandra迁移到多个文件   java connect MySQL数据库与playframework 2.5   java无法在片段中的SimpleAdapter中创建getView   java有线scala类型设计   java谷歌云消息开发者安卓代码崩溃   java使用@NoRepositoryBean运行Spring集成测试,没有@Repository实现   java在使用抽象类时为@RequestBody指定类型   java如何返回数组的和,并使用以下代码启动它?   java DecryptoJS中不返回所需数据的解密   java如何解析xml并选择要发送的项目   Eclipse中的java Google Web工具包   java获取两个文本的相似度百分比