【问题标题】:Python: translate sensor data into continuous frequency modulated audioPython:将传感器数据转换为连续调频音频
【发布时间】:2019-02-14 17:24:57
【问题描述】:

我有一段 python 脚本,它通过一个连续循环 (~5Hz) 从连接到我的 PC 的一组传感器中获取数据,就像接近传感器一样。

我想使用 python 以连续的方式将此传感器数据转换为音频输出。也就是说:当我的传感器循环运行时,我想生成并播放 连续 正弦音频声音,其频率由传感器输出调制(例如,更高的传感器值 = 更高的频率)。这是我想要的那种输出(当然没有 GUI:http://www.szynalski.com/tone-generator/

我查看了很多可用的软件包(pyDub、pyAudio、Winsound),但似乎都解决了一部分难题,无论是信号生成、保存还是播放,但我似乎无法找出如何将它们结合起来。

  • 可以执行频率调制并将不同频率链接在一起然后保存它们,如何实时播放它们而不堵塞我的传感器
  • 可以使用 WinSound 播放线程音频 -> 但如何实时更新频率?

或者这不是使用 python 继续前进的可行路线,我是否应该编写一个脚本,将传感器数据输入另一种对音频更友好的语言?

谢谢。

【问题讨论】:

  • 您对传感器数据的接收率是多少?如果摄入“太快”,您可能会遇到一个问题,虽然可以调节频率,但较短的持续时间意味着您将听不到它。
  • 最小可听持续时间与频率成正比。 (例如,较低的频率可能需要长达 1 秒,而较高的频率则少于此)。否则,你最终会听到咔哒声。如果你可以限制数据的接收,那么可以通过一些方法来实现。
  • @Anil_M 在给定频率的情况下,如何计算最小可听持续时间?有没有可以用来预测的公式?
  • 大约是 1/ (freq (Hz)) 。有关更多详细信息,请参阅此链接。 sound.stackexchange.com/questions/28163/…
  • 如果您的数据摄入量是每个样本

标签: python audio frequency modulation


【解决方案1】:

我有一段 Python 脚本,它通过一个连续循环 (~5Hz) 运行

只在循环中加上winsound.Beep(frequency_to_play, 1) 是不是不行?

【讨论】:

  • 感谢您的意见!这会产生 1 毫秒的哔声,当然是听不见的。但是,我可以将它放在我的循环中并创建一个我能听到的更长的哔哔声,但是有两个问题以及为什么我想避免这种方法: - 它不是异步/线程代码,所以脚本等待哔哔声结束然后继续。这是以宝贵的时间为代价的,因此不需要。 - 由于传感器循环及其工作每次迭代的更新时间略有不同,蜂鸣声将不稳定(即重复频率不同),这不是我想要的。
  • 可以通过将 Beep() 调用中的第二个值修改为大于 1 的值来更改以 ms 为单位的长度,但这并不能解决您提到的第二个问题。您可以在这里发布您的代码以便人们检查它吗?您可能希望详细描述如何从传感器获取数据,并可能提供示例/示例。
猜你喜欢
  • 2016-01-31
  • 2015-11-26
  • 1970-01-01
  • 2021-04-09
  • 2017-07-04
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
  • 2022-10-25
相关资源
最近更新 更多