首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第二个.wav文件播放第一个.wav文件的增强噪声,而不是降低噪声。

第二个.wav文件播放第一个.wav文件的增强噪声,而不是降低噪声。
EN

Stack Overflow用户
提问于 2018-04-17 02:41:50
回答 1查看 1.7K关注 0票数 1

我正试图在蟒蛇中实现主动降噪。我的项目由两套代码组成:

  1. 录音码
  2. 声音过滤码

我的目标是,当你运行程序,它将开始录音通过麦克风。在您完成录制之后,当您播放该文件时,将有一个名为"file1.wav“的保存文件,它是您最初录制的文件。完成之后,您现在将通过调用"fltrd()“将"file1.wav”放到过滤器中。这将在同一个文件夹中创建第二个wav文件,而该第二个wav文件被认为是噪音较小/降低的文件。现在我的问题是,第二个wav文件是增强噪音,而不是减少它。有人能帮我的代码排除故障吗?

下面是我的代码:

代码语言:javascript
复制
import pyaudio
import wave
import matplotlib.pyplot as plt
import numpy as np
import scipy.io.wavfile
import scipy.signal as sp

FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "file1.wav"

audio = pyaudio.PyAudio()

# start Recording
stream = audio.open(format=FORMAT, channels=CHANNELS,
                rate=RATE, input=True,
                frames_per_buffer=CHUNK)
print ("recording...")
frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)
print ("finished recording")


# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()

waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()


x = scipy.io.wavfile.read('file1.wav')
n = x[1]
y = np.zeros(n.shape)
y = n.cumsum(axis=0)

def fltrd():
    n,x = scipy.io.wavfile.read('file1.wav')
    a2 = x.cumsum(axis=0)
    a3 = np.asarray(a2, dtype = np.int16)
    scipy.io.wavfile.write('file2.wav',n,a3)
EN

回答 1

Stack Overflow用户

发布于 2018-04-20 18:23:33

实际的噪声滤波是困难和强烈的。然而,使用pydub库可以很容易地创建一个使用高通和低通滤波器的简单噪声滤波器。请参阅这里有更多的细节(安装,需求等)

另外,请看这里获得关于使用pydub的低通和高通滤波器的更多详细信息。

基本思想是取一个音频文件,然后通过低通和高通滤波器,使音频在一定的三次以上和下面都会被高度衰减(实际上是演示过滤)。虽然,这将不会影响任何噪音下降的通行证,你将需要看看其他噪音消除技术。

代码语言:javascript
复制
from pydub import AudioSegment
from pydub import low_passfilter
from pydub import high_pass_filter
from pydub.playback import play

song = AudioSegment.from_wav('file1.wav')

#Freq in Hz ,Adjust as per your needs
new = song.low_pass_filter(5000).high_pass_filter(200)
play(new)                
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49869050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档