#python #pyaudio
#python #pyaudio
Вопрос:
Я пытаюсь создать программу на Python, которая отображает форму сигнала на микрофонном входе в режиме реального времени, используя библиотеку pyaudio. Я продвинулся достаточно далеко только до того момента, когда пытаюсь отобразить один единственный момент формы сигнала, и столкнулся с проблемой. Вот мой код на данный момент:
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
CHUNK = 4096
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(
format=FORMAT,
channels=CHANNELS,
rate=RATE,
output=True,
input=True,
frames_per_buffer=CHUNK)
stream.start_stream()
data = stream.read(CHUNK)
data_int = np.frombuffer(data, np.int16)
print(data_int)
fig, ax = plt.subplots()
ax.plot(data_int, '-')
plt.show()
Когда я запускаю это, я действительно получаю график, но все значения равны либо 1, 0, либо -1 вместо того, чтобы быть звуковой волной. Вот изображение графика, которое я получаю. Этот график точно такой же каждый раз, когда я запускаю программу.
Я просто использую для этого встроенный микрофон моего ноутбука и подтвердил, что он работает в других приложениях. Есть идеи о том, что может быть причиной неправильного чтения аудиовхода?
Комментарии:
1. Я не уверен, поможет ли это, но это видео , похоже, довольно точно соответствует тому, чего вы пытаетесь достичь.
2. На самом деле, это видео, из которого я взял большую часть этого кода. Единственное, что я действительно изменил в его коде, это не использовать библиотеку struct, а вместо этого использовать np.frombuffer()
3. Интересно, я протестирую это в своей системе и свяжусь с вами.
4. Я бы не знал почему, извини. Я бы просто использовал пакет struct и изменил его, как указано в комментариях.
5. Вы нашли решение? У меня такая же проблема