【问题标题】:Python) "Real time Audio signal processing" How to plot x-axis in seconds?Python)“实时音频信号处理”如何以秒为单位绘制 x 轴?
【发布时间】:2016-10-30 00:57:43
【问题描述】:

我想实时绘制原始音频信号和 fft 信号。

我的代码是,

socket_server.bind(server_address)

print "Listening...\n"

while(True):   
    packet, client = socket_server.recvfrom(buffer_size)
    count=count+1

    if packet=='stop':
        print "client stops to send packets"
        break

    #Convert packet to numpy array
    signal.append(np.fromstring(packet, dtype=np.int16))

print "First Here"

socket_server.close()


signal_f = np.fft.fft(signal)
**Time = np.linspace(0,(len(signal)*(buffer_size/2))/sample_rate, num=(buffer_size/2))**

f, ax = plt.subplots(2, sharex=True)
ax[0].plot(Time, signal)
ax[0].set_title('Original Signal')
ax[1].plot(Time, abs(signal_f), 'r')
ax[1].set_title('fft signal')
plt.show()

我从 android 应用程序接收数据包(16 位 pcm 数据)。 minbuffersize 为 3584 字节。 (buffer_size = 3584)

要获得时间向量,我应该将信号大小除以帧速率。

所以在粗线中,我认为信号的大小是 len(signal)(收到的数据包的#) * 缓冲区大小/2(1792 字节 -> 收到的数据包的大小)。有错吗?

经核对,计算时间准确!我使用秒表并比较了 [(len(signal)*(buffer_size/2))/sample_rate] 的结果。两者都是一样的。

但上面的代码导致绘图错误。

ax[0].plot(时间,信号) 错误是“ x 和 y 必须具有相同的第一维”

我该怎么办?,,

【问题讨论】:

  • 请正确格式化您的代码,缩进四个空格。
  • 我编辑了它!谢谢!
  • Catch The error,检查时间和信号(特别是它们的尺寸),看看那里是否有线索,回溯代码,找出导致 if 的原因。

标签: android python audio-processing


【解决方案1】:

在调用 np.linespace() 的行中,尝试将 num=(buffer_size/2) 替换为 num=len(signal)

线条变成

Time = np.linspace(0,(len(signal)*(buffer_size/2))/sample_rate, num=len(signal) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多