Привет, уважаемые любители Python! Сегодня мы собираемся погрузиться в захватывающий мир потокового аудиографика в реальном времени. Являетесь ли вы энтузиастом музыки, звукорежиссером или просто любите возиться с кодом, эта статья покажет вам несколько методов создания захватывающих аудиовизуализаций на Python. Так что пристегнитесь и приготовьтесь насладиться потрясающим звуком!
Метод 1: Matplotlib и NumPy
Давайте начнем с классической комбинации Matplotlib и NumPy. Эти библиотеки предоставляют мощные инструменты для визуализации данных и численных вычислений. Используя модуль анимации Matplotlib, мы можем создать аудиографик в реальном времени, который динамически обновляется по мере продвижения аудиопотока. Вот фрагмент кода, который поможет вам начать:
import numpy as np
import matplotlib.pyplot as plt
import sounddevice as sd
duration = 10 # Duration of the audio stream in seconds
def audio_callback(indata, frames, time, status):
# Process the audio data here
# Update the plot with the new data
stream = sd.InputStream(callback=audio_callback)
stream.start()
# Set up the plot
fig, ax = plt.subplots()
line, = ax.plot([], [])
# Animation function
def animate(i):
# Get the audio data
data = stream.read(duration * stream.sample_rate)
# Process the audio data here
# Update the plot
line.set_data(x_values, y_values)
ax.relim()
ax.autoscale_view()
ani = animation.FuncAnimation(fig, animate, interval=10)
plt.show()
Метод 2: PyAudio и PyQtGraph
Другая популярная комбинация — PyAudio и PyQtGraph. PyAudio предоставляет интерфейс для потоковой передачи звука из различных источников, а PyQtGraph предлагает быстрые и эффективные возможности построения графиков. Давайте посмотрим, как мы можем создать живой аудиограф с помощью этих библиотек:
import pyaudio
import numpy as np
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
duration = 10 # Duration of the audio stream in seconds
def audio_callback(in_data, frame_count, time_info, status):
# Process the audio data here
# Update the plot with the new data
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=44100,
input=True,
frames_per_buffer=1024,
stream_callback=audio_callback)
# Set up the plot
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="Audio Graph")
plot = win.addPlot(title="Live Audio Graph")
curve = plot.plot()
# Update the plot
def update():
# Get the audio data
data = stream.read(duration * 44100)
# Process the audio data here
# Update the plot
curve.setData(x_values, y_values)
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(10)
if __name__ == '__main__':
QtGui.QApplication.instance().exec_()
Метод 3: Librosa и Plotly
Если вас интересуют расширенные возможности обработки звука и интерактивные визуализации, Librosa и Plotly — отличный выбор. Librosa специализируется на аудиоанализе, а Plotly предоставляет интерактивные и настраиваемые графики. Вот пример того, как вы можете создать живой аудиографик с помощью этих библиотек:
import librosa
import plotly.graph_objects as go
duration = 10 # Duration of the audio stream in seconds
def audio_callback(indata, frames, time, status):
# Process the audio data here
# Update the plot with the new data
stream = librosa.stream(input=True)
# Set up the plot
fig = go.FigureWidget()
fig.update_layout(title="Live Audio Graph")
# Update the plot
def update():
# Get the audio data
data = next(stream, None)
# Process the audio data here
# Update the plot
fig.data[0].x = x_values
fig.data[0].y = y_values
# Start the update loop
fig.show()
fig.update_layout(updatemenus=[dict(type="buttons",
buttons=[dict(label="Start",
method="animate",
args=[None, {"frame": {"duration": 10, "redraw": True},
"fromcurrent": True, "transition": {"duration": 0}}]),
dict(label="Stop",
method="animate",
args=[[None], {"frame": {"duration": 0, "redraw": False},
"mode": "immediate",
"transition": {"duration": 0}}])])])
fig.frames = []
if __name__ == '__main__':
while True:
update()
Это всего лишь несколько методов создания графиков потокового аудио в Python на Python. В каждом из этих методов используются разные библиотеки и подходы, что позволяет вам выбрать тот, который лучше всего соответствует вашим потребностям и предпочтениям.
Не забудьте адаптировать примеры кода к вашим конкретным требованиям, таким как источник звука и методы обработки. Имея в своем распоряжении эти методы, вы сможете визуализировать свой звук в режиме реального времени и вывести свои аудиопроекты на Python на новый уровень!