基于Debian 9的Perl声音合成

基于Debian 9的Perl声音合成,debian,audio,perl,Debian,Audio,Perl,如何在Debian 9上用Perl生成声音 自己做的研究,发现不多。例如,它的依赖项有问题(即,它又很旧,不接受Debian 9上的portaudio-2.0) 我指的是声音合成,不是播放文件。最接近我所寻找的是使用system命令调用sox程序。但这是在Perl之外实现的,因此不是一个好的集成。我需要一个像Perl模块这样的好模块。音频只是一条曲线,所以使一个点上下摆动并在某个时间间隔进行采样的代码将合成音频(PCM格式的原始音频)。。。这里perl生成了这样一条曲线 perl -e 'for

如何在Debian 9上用Perl生成声音

自己做的研究,发现不多。例如,它的依赖项有问题(即,它又很旧,不接受Debian 9上的
portaudio-2.0


我指的是声音合成,不是播放文件。最接近我所寻找的是使用
system
命令调用
sox
程序。但这是在Perl之外实现的,因此不是一个好的集成。我需要一个像Perl模块这样的好模块。

音频只是一条曲线,所以使一个点上下摆动并在某个时间间隔进行采样的代码将合成音频(PCM格式的原始音频)。。。这里perl生成了这样一条曲线

perl -e 'for ($c=0; $c<4*44100; $c++) {
             $k=1*sin((1500+$c/16e1)*$c*22e-6); print pack "f", $k;
         } ' |
sox -V -r 44100 -c 1 -b 32 -e floating-point -t raw - \
    -c 2 -b 16 -t wav - trim 0 3 gain -1 dither |
tee test.wav |
aplay
现在只需将上面的代码保存到一个文件中并将其源代码。。。vi使用上述代码创建一个文件

source somefile-with-above-code
将音频合成过程与声音渲染分离是很方便的,因此上述分工通常是合理的

或者,您可以使用perl合成原始音频,并将其直接转储到文件中。。。只需将以下perl片段保存到一个文件
vi我的音频perl文件中

perl -e 'for ($c=0; $c<4*44100; $c++) {
             $k=1*sin((1500+$c/16e1)*$c*22e-6); print pack "f", $k;
         } '
然后使用可视化和渲染PCM文件。。。文件->导入原始数据

-> Encoding -> 32 bit float 
-> Byte order -> Little-endian
-> Channels  -> 1 Channel (Mono)

点击
Import

至于将这个问题转移到SE,我已经在那里发布了,并且获得了很多接近票数的选票,但没有相关的答案。我相信我已经对此发表了评论,请看,这听起来可能值得一看。@haukex谢谢。但我浏览了SDL的手册,没有找到一个关于synthsis的词。那里只有音频播放。
source ./my-audio-perl-file  > synth_audio.pcm
-> Encoding -> 32 bit float 
-> Byte order -> Little-endian
-> Channels  -> 1 Channel (Mono)