微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Linux 和 Windows 在 Python 上的 USB 音频上接收到的不同音频样本

如何解决使用 Linux 和 Windows 在 Python 上的 USB 音频上接收到的不同音频样本

我正在处理一个项目,该项目的硬件设备编码为连接到 USB 端口的 USB 音频设备。它充当一种音频接收器,通过与其相应的设备配对来工作。然后它向我们发送我们尝试使用 Python 3.8.3 在 USB 上接收的数据。 我们试图接收的信号看起来像这样 256 266 276 286 296 306 316 326 336 346 356 366 376 386 396 406 416 426 436 446 456 466 476 486 496 506 516 526 536 546 556 566 576 586 596 606 616 626 636 646 我们的python代码在这里

import numpy as np
import pyaudio


SAMPLESIZE = 1024 # number of data points to read at a time
SAMPLERATE = 8000 # time resolution of the recording device (Hz)

RECORD_LENGTH = 5
FORMAT = pyaudio.paInt16


p = pyaudio.PyAudio() # instantiate PyAudio

stream=p.open(format=FORMAT,channels=1,rate=SAMPLERATE,input=True,frames_per_buffer=SAMPLESIZE) # use default input device to open audio stream
y = []

print("Start")

for i in range(int(SAMPLERATE / SAMPLESIZE * RECORD_LENGTH)):
    data = stream.read(SAMPLESIZE)
    frame = np.frombuffer(data,dtype=np.int16).tolist()
    # print(len(frame))
    y.extend(frame)

print("End")
stream.stop_stream()
stream.close()

p.terminate()
np_array = np.array(y) 
print(np_array[200:500]) #printing a slice of the array to display

然后我们将在控制台上显示数据。所以问题是,在 Windows 上,我们得到的输出如下所示,有几位递增和几位递减。在多次运行代码时,我注意到每次都会增加/减少相同的位。

windows output

我们在 linux 上使用相同的环境运行相同的代码,我们得到了符合要求的输出

linux console output

我需要知道我们遗漏了什么,是否与操作系统处理 USB 数据的方式有关?我在两个操作系统上的 python 上使用 sounddevice 库尝试了同样的事情,但结果相同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?