Hola a Tod@s
Estoy tratando de graficar una forma de onda con matplotlib, pero pyplot me
pone por defecto en el eje x el número de muestras del audio, la idea es
que el eje x aparezca en segundos, en este caso e importado un audio
llamado "sax1.wav" que es un audio en estéreo a 16 bits y 44100Hz de
frecuencia de muestreo,
sonido_entrada= wavfile.read("sax1.wav")
freq_sampleo= sonido_entrada[0]
# a continuación separo los canales L y R y los guardo en
listas diferentes.
l_mas_r = sonido_entrada[1]
canal_l = l_mas_r[:,0]
canal_r = l_mas_r[:,1]
# ahora establezco un arange desde 0 hasta la longitud del
audio, esto da # como resultado el número de muestras
que tiene el audio
longitud = np.arange(0,len(l_mas_r))
print longitud
# después calculo el tiempo en segundos tomando la
frecuencia de muestreo y # el número de muestras del audio
segundos = max(longitud)/float(freq_sampleo)
print segundos
# GRAFICACIÓN
# Deseo graficar cada canal en un subplot diferente.
# La línea plt.xticks(np.arange(segundos)) es mi intento
por graficar el eje x en # segundos mas no en nro. de
muestras
plt.subplots_adjust(hspace=.1)
plt.subplot(211)
# plt.xticks(np.arange(segundos))
plt.plot(longitud,canal_l)
plt.xlim(min(longitud),max(longitud))
plt.subplot(212)
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
plt.plot(longitud,canal_r)
plt.xlim(min(longitud),max(longitud))
plt.show()
Como se puede observar estoy tratando de graficar el eje x en segundos y no
en nro. de muestras, alguno conoce la forma gen'erica de hacerlo, es decir,
quiero que este c'odigo funcione para diferentes audios, por eso no lo hago
con los xticks de este modo:
xticks([valores,de,x], [r'$valores$',r'$de$',r'$X$'])
Gracias.
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/