def plot_spectrogram(wave, seg_length): """ """ spectrogram = wave.make_spectrogram(seg_length) print('Time resolution (s)', spectrogram.time_res) print('Frequency resolution (Hz)', spectrogram.freq_res) spectrogram.plot(high=700) decorate(xlabel='Time(s)', ylabel='Frequency (Hz)')
def test_spectrum(): signal = Chirp(start=220, end=440) wave = signal.make_wave(duration=1) spectrum = wave.make_spectrum() spectrum.plot(high=700) decorate(xlabel='Frequency (Hz)') signal = Chirp(start=220, end=440) wave = signal.make_wave(duration=1, framerate=11025) plot_spectrogram(wave, 512)
def test_Sawtooth(): signal = SawtoothSignal(200) duration = signal.period * 3 segment = signal.make_wave(duration, framerate=10000) segment.plot() decorate(xlabel='Time (s)') wave = signal.make_wave(duration=0.5, framerate=10000) wave.apodize() spectrum = wave.make_spectrum() spectrum.plot() decorate(xlabel='Frequency (Hz)')
def test_Chirp(): pathdir_out = "chap3_out" if not os.path.exists(pathdir_out): try: os.makedirs(pathdir_out) except: pass wavfilename = pathdir_out + "/Chirp.wav" signal = Chirp(start=220, end=880) wave1 = signal.make_wave(duration=2) wave1.segment(start=0, duration=0.05).plot() decorate(xlabel='Time (s)') wave1.write(wavfilename)
def filter_wave(wave, start, duration, cutoff): """Selects a segment from the wave and filters it. Plots the spectrum and displays an Audio widget. wave: Wave object start: time in s duration: time in s cutoff: frequency in Hz """ segment = wave.segment(start, duration) spectrum = segment.make_spectrum() spectrum.plot(high=5000, color='0.7') spectrum.low_pass(cutoff) spectrum.plot(high=5000, color='#045a8d') decorate(xlabel='Frequency (Hz)') audio = spectrum.make_wave().make_audio() display(audio)
from thinkdsp import CosSignal, SinSignal from thinkdsp import decorate cos_sig = CosSignal(freq=440, amp=1.0, offset=0) sin_sig = SinSignal(freq=880, amp=0.5, offset=0) oadd = SinSignal(freq=500, amp=0.7, offset=0) mix = sin_sig + cos_sig + oadd cos_sig.plot() decorate(xlabel='cos_sig') sin_sig.plot() decorate(xlabel='sin_sig') mix.plot() decorate(xlabel='mix') wave = mix.make_wave(duration=5, start=0, framerate=11025) wave.play('temp.wav') spectrum = wave.make_spectrum() spectrum.plot() decorate(xlabel='Frequency (Hz)')
from thinkdsp import CosSignal, SinSignal from thinkdsp import decorate import matplotlib.pyplot as plt cos_sig = CosSignal(freq=440, amp=1.0, offset=0) sin_sig = SinSignal(freq=880, amp=0.5, offset=0) mix = sin_sig + cos_sig wave = mix.make_wave(duration=0.01, start=0, framerate=11025) wave.play('test3.wav') wave.normalize() wave.make_audio() plt.subplot(2, 1, 1) wave.plot() spectrum = wave.make_spectrum() plt.subplot(2, 1, 2) spectrum.plot(high=5000) decorate(xlabel='Frequency (Hz)') plt.show()
sys.path.insert(1, 'dsp-modulo') import numpy as np import thinkplot as pl from thinkdsp import decorate from thinkdsp import UncorrelatedUniformNoise senal = UncorrelatedUniformNoise() wave = senal.make_wave(duration=0.5, framerate=22050) wave.write("ruidoNoCorrelacionadoUniforme.wav") segmento = wave.segment(duration=0.05) segmento.plot() decorate(xlabel="tiempo", ylabel="amplitud") pl.show() espectro = wave.make_spectrum() espectro.plot_power() decorate(xlabel="frecuencia", ylabel="power") pl.show() espectro_integrado = espectro.make_integrated_spectrum() espectro_integrado.plot_power() decorate(xlabel="frecuencia", ylabel="poder acumulado") pl.show() pendiente = espectro.estimate_slope() print("pendiente: " + str(pendiente.slope))
import sys sys.path.insert(1, 'dsp-modulo') import numpy as np import thinkplot as plt from thinkdsp import decorate from thinkdsp import PinkNoise pendientes = [0.0, 1.5, 2.0] for pendiente in pendientes: senal = PinkNoise(beta=pendiente) wave = senal.make_wave(duration=0.5, framerate=22050) #wave.write("ruido_rosa.wav") #wave.plot() #decorate(xlabel="Tiempo", ylabel= "Amplitud") #plt.show() etiqueta = f'pendiente= {pendiente}' espectro = wave.make_spectrum() espectro.plot_power(label=etiqueta, alpha=0.5) loglog = dict(xscale="log", yscale="log") decorate(xlabel="Frecuencia", ylabel="Poder", **loglog) plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate import matplotlib.pyplot as plt seno = SinSignal(freq=20, amp=1, offset=0) coseno = CosSignal(freq=50, amp=1.3, offset=0) waveSeno = seno.make_wave(duration=1, start=0, framerate=11025) waveCoseno = coseno.make_wave(duration=1, start=0, framerate=11025) waveResultante = waveSeno + waveCoseno decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") waveSeno.plot() waveCoseno.plot() plt.show() decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") waveResultante.plot() plt.show()
from thinkdsp import Spectrum, TriangleSignal, SquareSignal from thinkdsp import decorate import matplotlib.pyplot as plt import numpy as np triangle = TriangleSignal(440).make_wave(duration=0.01) plt.subplot(2, 1, 1) triangle.plot() decorate(xlabel="time(s)") spectrum = triangle.make_spectrum() print(spectrum.hs[0]) spectrum.hs[0] = 100 plt.subplot(2, 1, 2) triangle.plot(color="gray") spectrum.make_wave().plot() decorate(xlabel='Time(s)') plt.show()
from thinkdsp import CosSignal, SinSignal, decorate import matplotlib.pyplot as plt cosine_signal = CosSignal(freq=440, amp=1.0, offset=0) sine_signal = SinSignal(freq=880, amp=0.5, offset=0) cosine_signal.plot() decorate(xlabel='Time (s)') # figure, (axes1, axes2) = plt.subplots(nrows=2) # axes1.plot(cosine_signal) # axes1.set_xlabel('Time (s)') plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import thinkplot frecuencia1 = SinSignal(freq=1500, amp=0.3, offset=0) frecuencia2 = SinSignal(freq=380, amp=0.6, offset=0) frecuencia3 = SinSignal(freq=5300, amp=1, offset=0) frecuencia4 = SinSignal(freq=12300, amp=0.1, offset=0) resultante1 = frecuencia1 + frecuencia2 resultante2 = frecuencia3 + frecuencia4 waveResultante1 = resultante1.make_wave(duration=1, start=0, framerate=44100) waveResultante2 = resultante2.make_wave(duration=1, start=1.3, framerate=44100) wavefinal = waveResultante1 + waveResultante2 wavefinal.plot() decorate(xlabel="Tiempo (s)") thinkplot.show() espectro = wavefinal.make_spectrum() espectro.plot() decorate(xlabel="Hz") thinkplot.show()
from thinkdsp import Spectrum, TriangleSignal from thinkdsp import decorate import matplotlib.pyplot as plt import numpy as np signal = TriangleSignal(440) #绘制三角波 duration = signal.period*3 segment = signal.make_wave(duration, framerate=10000) plt.subplot(3,1,1) segment.plot() decorate(xlabel='Time (s)') wave = signal.make_wave(duration=0.01, framerate=10000) plt.subplot(3,1,2) Spectrum = wave.make_spectrum() Spectrum.plot() print(Spectrum.hs[0]) decorate(title=Spectrum.hs[0]) plt.subplot(3,1,3) Spectrum.hs[0] = 100 Spectrum.plot() decorate(title=Spectrum.hs[0]) plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import thinkplot frecuencia1 = SinSignal(freq=1500, amp=0.3, offset=0) frecuencia2 = SinSignal(freq=380, amp=0.6, offset=0) frecuencia3 = SinSignal(freq=5300, amp=1.0, offset=0) frecuencia4 = SinSignal(freq=12300, amp=0.1, offset=0) resultante1 = frecuencia1 + frecuencia2 resultante2 = frecuencia3 + frecuencia4 waveResultante1 = resultante1.make_wave(duration=1, start=0, framerate=44100) waveResultante2 = resultante2.make_wave(duration=1, start=1.3, framerate=44100) waveFinal = waveResultante1 + waveResultante2 waveFinal.plot() decorate(xlabel="Tiempo (s)") thinkplot.show() espectro = waveFinal.make_spectrum() espectro.plot() decorate(xlabel="Fracuencia (Hz)") thinkplot.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate from thinkdsp import read_wave import thinkplot waveTelefono = read_wave("telefono.wav") waveTelefono.plot() decorate(xlabel="Tiempo(s)") thinkplot.show() #espectro = waveTelefono.make_spectrum() #espectro.plot() #decorate(xlabel='Frecuencia (Hz)') #thinkplot.show() wavePrimerDigito = waveTelefono.segment(start=0, duration=0.5) wavePrimerDigito.plot() decorate(xlabel="Tiempo (s)") thinkplot.show() #2 espectroPrimerDigito = wavePrimerDigito.make_spectrum() #espectroPrimerDigito.plot() #decorate(xlabel='Frecuencia (Hz)') #thinkplot.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import thinkplot frecuencia1 = SinSignal(freq=1500, amp=0.3, offset=0) frecuencia2 = SinSignal(freq=380, amp=0.6, offset=0) frecuencia3 = SinSignal(freq=5300, amp=1.0, offset=0) frecuencia4 = SinSignal(freq=12300, amp=0.1, offset=0) resultante1 = frecuencia1 + frecuencia2 resultante2 = frecuencia3 + frecuencia4 waveResultante1 = resultante1.make_wave(duration=1, start=0, framerate=44100) waveResultante2 = resultante2.make_wave(duration=1, start=1.3, framerate=44100) waveFinal = waveResultante1 + waveResultante2 waveFinal.plot() decorate(xlabel="tiempo S") thinkplot.show() espectro = waveFinal.make_spectrum() espectro.plot() decorate(xlabel="frecuencia Hz") thinkplot.show()
#decorate(xlabel="Tiempo (s)") #thinkplot.show() #espectro = waveTelefono.make_spectrum() #espectro.plot() #decorate(xlabel="Frecuencia (Hz)") #thinkplot.show wavePrimerDigito = waveTelefono.segment(start=0, duration=0.5) #wavePrimerDigito.plot() #decorate(xlabel="Tiempo (s)") #thinkplot.show() # 22-45-32 espectroPrimerDigito = wavePrimerDigito.make_spectrum() espectroPrimerDigito.plot() decorate(xlabel="Frecuencia 1 (Hz)") thinkplot.show() waveSegundoDigito = waveTelefono.segment(start=0.5, duration=0.5) espectroSegundoDigito = waveSegundoDigito.make_spectrum() espectroSegundoDigito.plot() decorate(xlabel="Frecuencia 2 (Hz)") thinkplot.show() waveTercerDigito = waveTelefono.segment(start=1, duration=0.5) espectroTercerDigito = waveTercerDigito.make_spectrum() espectroTercerDigito.plot() decorate(xlabel="Frecuencia 3 (Hz)") thinkplot.show() waveCuartoDigito = waveTelefono.segment(start=1.5, duration=0.5)
import sys sys.path.insert(1, 'dsp-modulo') import numpy as np import thinkplot as plt from thinkdsp import decorate from thinkdsp import BrownianNoise senal = BrownianNoise() wave = senal.make_wave(duration=0.5, framerate=22050) wave.write("ruidoBrowniano.wav") wave.plot() decorate(xlabel="Tiempo", ylabel="Amplitud") plt.show() espectro = wave.make_spectrum() espectro.plot_power() loglog = dict(xscale="log", yscale="log") decorate(xlabel="frecuencia", ylabel="poder", **loglog) plt.show() pendiente = espectro.estimate_slope() print("pendiente" + str(pendiente.slope))
import thinkdsp import numpy as np from thinkdsp import Chirp, SawtoothSignal, Sinusoid import math import matplotlib.pyplot as plt from winsound import PlaySound wave = thinkdsp.read_wave('72475__rockwehrmann__glissup02.wav') wave.make_spectrogram(512).plot(high=5000) thinkdsp.decorate(xlabel='Time (s)', ylabel='Frequency (Hz)') plt.show()
#import sys #sys.path.insert(1,'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate #modulo para mostrar las graficas import matplotlib.pyplot as plt #crear señal senoidal seno = SinSignal(freq=200, amp=0.7, offset=0) coseno = CosSignal(freq=800, amp=1.1, offset=0) #creamos grafica y asignamos propiedades seno.plot() coseno.plot() decorate(xlabel='Tiempo (s)') decorate(ylabel='Amplitud') plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate import matplotlib.pyplot as plt seno = SinSignal(freq=20, amp=1, offset=0) coseno= CosSignal(freq=50,amp=1.3, offset=0) waveSeno = seno.make_wave(duration=1, start=0, framerate=11025) waveCoseno = coseno.make_wave(duration=1, start=0, framerate=11025) waveResultante = waveSeno + waveCoseno decorate(xlabel='Tiempo(s)', ylabel='Amplitud') waveSeno.plot() waveCoseno.plot() plt.show() decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") waveResultante.plot() plt.show()
""" 改写evaluate函数 ts: 时间 """ freqs = np.linspace(self.start, self.end, len(ts)) dts = np.diff(ts, prepend=0) dphis = PI2 * freqs * dts phases = np.cumsum(dphis) cycles = phases / PI2 frac, _ = np.modf(cycles) ys = normalize(unbias(frac), self.amp) return ys signal = Chirp(start=220, end=440) wave = signal.make_wave(duration=1) spectrum = wave.make_spectrum() plt.subplot(2, 1, 1) spectrum.plot(high=700) decorate(xlabel='Frequency (Hz)') wave.play("niaojiao.wav") signal = SawtoothChirp(start=220, end=880) wave = signal.make_wave(duration=1, framerate=14000) sp = wave.make_spectrogram(256) plt.subplot(2, 1, 2) sp.plot() decorate(xlabel='Time (s)', ylabel='Frequency (Hz)') plt.show() #wave.play("temp2.wav")
from thinkdsp import SawtoothSignal, Signal, Spectrum import matplotlib.pyplot as plt from thinkdsp import decorate Signal = SawtoothSignal(200) duration = Signal.period * 3 segment = Signal.make_wave(duration, framerate=20000) segment.plot() decorate(xlabel='Time(s)') plt.show() plt.show() wave = Signal.make_wave(duration=0.5, framerate=10000) wave.apodize() wave.make_audio() wave.write(filename='2-2.wav') Spectrum = wave.make_spectrum() Spectrum.plot() decorate(xlabel='频谱(Hz)') plt.show()
import sys sys.path.insert(1, 'dsp-modulo') import numpy as np import thinkplot as plt from thinkdsp import decorate from thinkdsp import UncorrelatedUniformNoise senal = UncorrelatedUniformNoise() wave = senal.make_wave(duration=0.5, framerate=22050) wave.write("ruido_no_correlacional_uniforme.wav") segmento = wave.segment(duration=0.05) segmento.plot() decorate(xlabel="Tiempo(s)", ylabel="Amplitud") plt.show() espectro = wave.make_spectrum() espectro.plot_power() decorate(xlabel="Frecuencia (Hz)", ylabel="Poder") plt.show() espectro_integrado = espectro.make_integrated_spectrum() espectro_integrado.plot_power() decorate(xlabel="Frecuencia (Hz)", ylabel="Poder acumulado") plt.show() pendiente = espectro.estimate_slope() print("Pendiente: " + str(pendiente.slope))
import os import wget import matplotlib.pyplot as plt from converter import fromMp3ToWav from matrix_creator import VolumeMatrix from constellation_map_creator import ConstellationMap if not os.path.exists('thinkdsp.py'): wget.download( 'https://github.com/AllenDowney/ThinkDSP/raw/master/code/thinkdsp.py') from thinkdsp import read_wave, decorate # no pep8 if __name__ == "__main__": src = '~PATH_TO_THE_SOUND_SOURCE/[file_name.mp3 or file_name.wav]' if 'mp3' in src: src = fromMp3ToWav(src) wave = read_wave(src) wave.normalize() matrix = VolumeMatrix(wave, (200, 2000), 0.01) matrix.decorator() const_map = ConstellationMap(matrix) const_map.find_stars() stars = const_map.data_for_map_drawing plt.figure(figsize=(10, 7)) plt.subplots_adjust(bottom=0.1) plt.scatter(stars[:, 0], stars[:, 1], marker="x") decorate(xlabel='Time, s', ylabel='Frequency, Hz') plt.show()
from thinkdsp import SinSignal from thinkdsp import decorate from thinkdsp import read_wave from thinkdsp import play_wave import matplotlib.pyplot as plt seno = SinSignal(freq=440, amp=1.0, offset=0) segundo_seno = SinSignal(freq=340, amp=1, offset=0) tercer_seno = SinSignal(freq=600, amp=0.7, offset=0) wave_seno = seno.make_wave(duration=1.0, start=1, framerate=44100) wave_segundo_seno = segundo_seno.make_wave(duration=1.0, start=2, framerate=44100) wave_tercer_seno = tercer_seno.make_wave(duration=1.0, start=3, framerate=44100) resultante = wave_seno + wave_segundo_seno + wave_tercer_seno decorate(xLabel="Tiempo (s)") decorate(yLabel="Amplitud") resultante.plot() resultante.write("Sonido.wav") plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate from thinkdsp import CosSignal #crear señal senoidal seno = SinSignal(freq=400, amp=0.7, offset=0) coseno = CosSignal(freq=800, amp=1.1, offset=0) #modulo para mostrar grafiicas import matplotlib.pyplot as plt #crear grafica en memoria seno.plot() decorate(xlabel='tiempo (s)') decorate(ylabel='amplitud') coseno.plot() plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import thinkplot frecuencia1 = SinSignal(freq=1500, amp=0.3, offset=0) frecuencia2 = SinSignal(freq=380, amp=0.6, offset=0) frecuencia3 = SinSignal(freq=5300, amp=1.0, offset=0) frecuencia4 = SinSignal(freq=12300, amp=0.1, offset=0) resultante1 = frecuencia1 + frecuencia2 resultante2 = frecuencia3 + frecuencia4 waveResultante1 = resultante1.make_wave(duration=1,start=0,framerate=44100) waveResultante2 = resultante2.make_wave(duration=6,start=1.3,framerate=44100) waveFinal = waveResultante1 + waveResultante2 waveFinal.plot() decorate(xLabel="Tiempo (s)") thinkplot.show() espectro = waveFinal.make_spectrum() espectro.plot() decorate(xLabel="Frecuencia (Hz)") thinkplot.show()
import sys sys.path.insert(1,'dsp-modulo') import numpy as np import thinkplot as plt from thinkdsp import decorate from thinkdsp import PinkNoise pendientes = [0.0, 1.5, 2.0] for pendiente in pendientes: senal = PinkNoise(beta=pendiente) wave = senal.make_wave(duration=0.5, framerate=22050) #wave.write("ruidorosa.wav") #wave.plot() #decorate(xlabel="tiempo",ylabel="amplitud") #plt.show() etiqueta = f'pendiente={pendiente}' #etiqueta = "pendiente=" + pendiente espectro = wave.make_spectrum() espectro.plot_power() loglog = dict(xscale="log",yscale="log") decorate(xlabel="frecuencia", ylabel="poder", **loglog) plt.show()