tierra ruidos ruido quitar programa para online microfonos interferencia inalambricos gratis grabaciones fondo evitar eliminar como python networking audio udp pyaudio

python - ruidos - eliminar ruido de un audio online



Transferencia de sonido UDP: sonido reproducido tiene mucho ruido (1)

He buscado la razón de este ruido. Finalmente pude detectar por qué sucedió esto.

En realidad, esta transferencia UDP del programa no causó la pérdida de paquetes.

Incluso si lo hizo, el sonido no tiene un ruido tan serio.


Este programa envió datos correctamente y casi no hay pérdida de paquetes, pero el método "recibir" no pudo recibir los datos correctamente.


En el programa de servidor

def udpStream(CHUNK): udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp.bind(("127.0.0.1", 12345)) while True: soundData, addr = udp.recvfrom(CHUNK) frames.append(soundData) udp.close()

Este programa podría solo datos "25%". (Comprobé la cantidad de datos)

Entonces, traté de recibir los datos multiplicados (CHANNELS * 2)

soundData, addr = udp.recvfrom(CHUNK * CHANNELS * 2)

Esto da como resultado que los datos de sonido se puedan recibir 100% por completo.

Finalmente, el sonido grabado por una PC se reproduce en la otra PC sin ruido.

No tengo idea de cómo resolver este problema. Por favor, ayúdame :)

Me gustaría enviar datos de sonido, grabados por una PC, a la otra PC y reproducirlos. (por UDP)

El programa puede funcionar correctamente, pero el sonido contiene (?) Ruido incómodo. cuando intenté grabar y reproducir sonido en una secuencia de programa, funcionó correctamente. No hubo ruido. En caso de usar UDP incluso en una PC, use IP 127.0.0.1, apareció el ruido. Al principio, pensé que el factor es porque el sonido reproducido está en la otra PC y lo solucioné haciendo buffer. Resolvió poco ruido, pero casi todo el ruido aún permanece.

el siguiente código es

Cliente

import pyaudio import socket from threading import Thread frames = [] def udpStream(): udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while True: if len(frames) > 0: udp.sendto(frames.pop(0), ("127.0.0.1", 12345)) udp.close() def record(stream, CHUNK): while True: frames.append(stream.read(CHUNK)) if __name__ == "__main__": CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 p = pyaudio.PyAudio() stream = p.open(format = FORMAT, channels = CHANNELS, rate = RATE, input = True, frames_per_buffer = CHUNK, ) Tr = Thread(target = record, args = (stream, CHUNK,)) Ts = Thread(target = udpStream) Tr.setDaemon(True) Ts.setDaemon(True) Tr.start() Ts.start() Tr.join() Ts.join()

Servidor

import pyaudio import socket from threading import Thread frames = [] def udpStream(CHUNK): udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp.bind(("127.0.0.1", 12345)) while True: soundData, addr = udp.recvfrom(CHUNK) frames.append(soundData) udp.close() def play(stream, CHUNK): BUFFER = 10 while True: if len(frames) == BUFFER: while True: stream.write(frames.pop(0), CHUNK) if __name__ == "__main__": FORMAT = pyaudio.paInt16 CHUNK = 1024 CHANNELS = 2 RATE = 44100 p = pyaudio.PyAudio() stream = p.open(format=FORMAT, channels = CHANNELS, rate = RATE, output = True, frames_per_buffer = CHUNK, ) Ts = Thread(target = udpStream, args=(CHUNK,)) Tp = Thread(target = play, args=(stream, CHUNK,)) Ts.setDaemon(True) Tp.setDaemon(True) Ts.start() Tp.start() Ts.join() Tp.join()

lo siento por el largo código fuente. Siéntase libre de jugar este programa.