Как удалить/уменьшить шум из аудиофайла .wav в python

У меня есть аудиофайл .wav, я работаю над преобразованием аудио в текст. Мне нужно уменьшить/удалить шум, чтобы получить более точный результат.

Пожалуйста, дайте мне знать, как это сделать

import wave
import sys

import binascii

ip = wave.open('C:\\Users\\anagha\\Documents\\Python Scripts\\a1.wav', 'r')

op = wave.open('C:\\Users\\anagha\\Documents\\Python Scripts\\r_1.wav', 'w')
op.setparams(ip.getparams())

for i in range(ip.getnframes()):
iframes = ip.readframes(1)
amp = int(binascii.hexlify(iframes))
if amp > 32767:
    amp = 65535 - int(binascii.hexlify(iframes))#-ve
    print(amp)
else:
    amp = int(binascii.hexlify(iframes))#+ve
    print(amp)
if amp < 2000:
    #make it zero
    final_frame = '\x00\x00'
else:
    #Keep the frame 
    final_frame = iframe
op.writeframes(final_frame)
op.close()
ip.close()

получение ошибки:

 ValueError: invalid literal for int() with base 10: b'ffff'

person Anagha    schedule 12.04.2017    source источник


Ответы (2)


Вы пытаетесь преобразовать не-число в целое,

Возможно, вы имели в виду.

    amp = int(len(binascii.hexlify(iframes)))
person Darshan Jadav    schedule 26.07.2017

При преобразовании в шестнадцатеричную строку int без начального «0x» укажите базу вручную. Как следует:

int(binascii.hexlify(iframes), 16)
person Alexey Antonenko    schedule 29.08.2017