es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo extraer diferentes frecuencias de un archivo WAV en python?

Estoy tratando de reproducir diferentes frecuencias a intervalos de tiempo iguales desde una computadora y analizarlas en otra.
Hasta ahora he logrado reproducir frecuencias, grabarlas desde la otra computadora y guardarlas en un archivo WAV usando Python.
Mi problema comienza cuando intento analizar el archivo. He probado muchos métodos que encontré en línea, pero ninguno ha funcionado.
¿Alguien puede recomendarme una biblioteca o un algoritmo que se ajuste a esta descripción? 🙂

Esto es lo que tengo:

def getFreq(start):
end = start + 10
sr, data = wavfile.read("somefile.wav")
sp = int(sr * start / 1000)
ep = int(sr * end / 1000)
l = 10 / 1000
c = 0
for i in range(sp, ep):
if data[i] < 0 and data[i + 1] > 0:
c += 1
return int(c / l)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en la información proporcionada, parece que el problema es realizar un análisis de frecuencia en un archivo de audio grabado desde un ordenador, que fue generado reproduciendo diferentes frecuencias a intervalos de tiempo iguales desde otro ordenador utilizando Python. El fragmento de código actual proporcionado sirve para determinar la frecuencia de una porción específica del archivo de audio.

    Para realizar un análisis de frecuencia en todo el archivo de audio, un enfoque común es utilizar la Transformada de Fourier Rápida (FFT), que está implementada en muchas bibliotecas de Python como NumPy y SciPy.

    Aquí hay un ejemplo de fragmento de código que utiliza la biblioteca SciPy para calcular la FFT de un archivo de audio y representar su espectro de frecuencia:

    import numpy as np
    from scipy.io import wavfile
    import matplotlib.pyplot as plt
    
    # Carga el archivo de audio
    filename = 'algunarchivo.wav'
    sample_rate, data = wavfile.read(filename)
    
    # Calcula la FFT de todos los datos de audio
    fft_data = np.fft.fft(data)
    
    # Calcula el eje de frecuencia
    freq_axis = np.fft.fftfreq(len(data)) * sample_rate
    
    # Representa el espectro de frecuencia
    plt.plot(freq_axis, np.abs(fft_data))
    plt.xlabel('Frecuencia [Hz]')
    plt.ylabel('Magnitud')
    plt.show()
    

    Este código lee el archivo de audio utilizando la función wavfile.read de SciPy, calcula la FFT de todos los datos utilizando np.fft.fft, y calcula el eje de frecuencia correspondiente utilizando np.fft.fftfreq. Finalmente, representa el espectro de frecuencia utilizando matplotlib.pyplot.

    Esto debería dar una idea aproximada del contenido de frecuencia del archivo de audio. Sin embargo, hay muchos factores a considerar al analizar señales de audio, como la ventana, la fuga espectral y la reducción de ruido, que están más allá del alcance de esta respuesta.

Comments are closed.