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

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如何使用DBFlow进行迁移?   java无法从socket读取数据   java在JButton上使用鼠标运动监听器?   元素的java ArrayList链接和get IndexOutOfBoundsException   javascript如何在Java脚本中从ajax调用解析JSON对象   从数据库中获取信息并将其写入JTable。错误:java。lang.IndexOutOfBoundsException:索引:2,大小:2   spring如何使用Java SpringBoot在FCM推送通知中向IOS发送图像通知   java jsoup:解析某个标记的数据,该标记恰好位于某个特定标记之后   java没有HashMap的等式依赖于EntrySet。钥匙套?   未按预期评估java Maven属性(osmavenplugin)   类Java向ArrayList添加了用户输入,需要用另一个ArrayList中的变量分隔   JavaJSF丰富:每行呈现的数据列表?   集合Java 8按属性区分   在Java中,是否可以(静态)导入构造函数或局部变量?   安卓在ubuntu 10上安装java时出错64位   java是否应该hashCode()只使用equals()中使用的不可变字段的子集?   java如何创建ConcurrentMultiMap