1

I am totally new to python, so I tried to read and learn what I could but I cannot seem to do what I want, and I haven't found a solution on Stack Overflow or other sources. My aim is to create a wave file of brown noise with amplitude modulation at a given frequency. I want to generate brown noise and modulate it.

I intended to use the python acoustics package, unfortunately I don't understand how to use the functions to create colored noise. I looked at the examples, but I don't see examples on colored noises functions use.

Anyone can help me solving this issue? Thanks.


Here is my code:

""" This file proposes to modulate a given wav file"""

import wave
import struct
import time
import math
import random
import acoustics

###########################################
# General variables
outputName = "waveXP.wav"
frequencyModulation = 40
period = 1/frequencyModulation
duration = 1
maxVolume = 23000.0
framerate = 44100


###########################################
# Ask the user about the output file name
temp = ""
temp = input("Name of the output wave file to import (with extension):")
if temp != "":
    outputName = str(temp)

# Ask the user about the modulation frequency wanted
temp = ""
temp = input("Modulation frequency wanted (in hertz):")
if temp != "":
    frequencyModulation = int(temp)

period = 1/frequencyModulation

# Ask the user about the duration wanted
temp = ""
temp = input("Duration wanted (in seconds):")
if temp != "":
    duration = int(temp)

print("------------------------")


###########################################
# Create the output wave file
newWaveFile = wave.open(outputName, "w")

# Define parameters of the wave file
# nchannels = 1 for mono; sampwidth = 2 for 2 bytes per sample; framerate = 44100 for wave file;
# comptype = "NONE" for no compression support; compname = 'not compressed' for no compression support
newWaveFile.setparams([1, 2, framerate, duration, 'NONE', 'not compressed'])

# Generate noise
newWaveFile.writeframes(struct.pack('h'*framerate*duration, *int(maxVolume*0.7*acoustics.generator.brown(framerate*duration))))

# Close wave files
originalWaveFile.close()
newWaveFile.close()
4

1 回答 1

0

看起来您提议的库已经有一个棕色噪声发生器:

http://python-acoustics.github.io/python-acoustics/generator.html

假设您只想将单个调制作为幅度增益应用到整个信号,那么您可能希望以信号的采样率对调制进行采样,并将调制(乘以某个比例因子)添加到棕色噪声信号中。或者,您可以将信号乘以调制,但这会产生更极端的效果。

于 2020-06-03T21:18:54.777 回答