【问题标题】:android audio distortion on square waveform方波上的android音频失真
【发布时间】:2015-06-29 00:02:20
【问题描述】:

我发现我的智能手机 (android 4.2.2) 无法生成方波(我需要它使用音频输出作为串行线进行数据传输)。 一开始我以为这是我的应用程序,但后来我做了很多重要的测试。这些是最新的测试。我希望你能找到这个现象的解释。

我生成了一个 wav 文件,其中包含 500Hz 的方波。 我在安卓手机和苹果 iPhone 上播放 wav 文件。 我用笔记本(连接笔记本音频输入的音频线)记录并分析了信号。

然后我用连接在蓝牙收发器设备和笔记本音频输入之间的音频线重复了测试。并且智能手机通过蓝牙(一次一个)连接到蓝牙收发设备。

注意:蓝牙收发设备是一种通过蓝牙接收音频数据并通过标准音频插孔提供音频输出的设备。

这是直接连接在音频插孔上的 iphone 产生的信号:

这是蓝牙设备从 iphone 接收数据产生的信号:

这是android设备直接连接音频插孔产生的信号:

这是蓝牙设备从安卓智能手机接收数据产生的信号:

分析:

-蓝牙设备会降低信号带宽(在我看来这是可以接受的)。

-iphone的模拟部分非常好(输出非常好的方波)

-android 设备的模拟部分非常糟糕(即使它非常适合音乐播放)

-android 手机发送到蓝牙设备的数据不正确,实际上获取的信号与从 iphone 获取的数据不同。

我将智能手机恢复为出厂默认设置,但问题仍未解决。 我也尝试安装 kitkat 自定义 rom,但问题仍然存在。 我还尝试使用 Nexus 5 (android 5) 和 samsung S4 mini (android 4.2.2 like mine),它们的行为就像 iphone。

我怀疑问题与 DTS 工作室声音有关(我尝试禁用它并以不同的方式设置它但没有成功)。 DTS 似乎是我的手机和三星 s4 mini 之间唯一的软件差异。

问题:我可以理解我的 android 设备的模拟部分不如 iphone,我也可以假设我的 android 设备的模拟部分坏了......但我不明白我为什么不这样做'当我插入蓝牙收发设备时获得相同的结果。

【问题讨论】:

  • 如果没有其他地方,肯定会在串联电容器中同时过滤低通和高通。很可能还有各种丑陋的处理,例如采样率转换。但是您的程序也可能存在问题,例如某些设备上的缓冲区不足。要真正诊断,请显示失真输出的图片,在各种频率下,并覆盖方波的多个周期。你的缓冲区有多大?坏设备上的最小缓冲区大小查询返回什么?包含生成和播放代码也会很有用。
  • 您也可以尝试在 PC 上使用 Audacity 或将样本写入文件的程序端口将您的信号创建为 .wav 文件,验证它是否按需要在那里播放,然后试图在 Android 设备上播放。这将有助于确定是设备的硬件或出厂软件有问题,还是您的程序有问题。
  • 嗨@Cris Stratton,我的应用程序并不重要,因为如果我从默认音频应用程序(android 提供的那个)播放 wav 文件,也会出现问题。我会尝试提供快照
  • @ChrisStratton 再次阅读了我的问题,我按照您的第二条消息的建议做了。这就是为什么我要疯了。我编辑了我的问题..

标签: android audio waveform distortion


【解决方案1】:

你为什么使用方波?这是一个要求吗?方波在数字系统中是有意义的,但作为一种模拟信号,它具有各种令人讨厌的特性(如果我记得的话,比如无限频谱)。为什么不在手机音频系统设计的人类可听范围内使用两种音调呢?

有许多信令和调制技术可用于通过模拟或音频通道发送数据。您看过以下任何内容吗?

How could you transfer data over an audio line?

Audio Modem: data over sound

Transfering data using audio signal in android

第三个链接描述了在 Android 中使用Frequency-shift keying。这看起来是一个非常好的解决方案。 FSK 的维基百科页面包括以下有关音频 FSK 的 cmets

音频频移键控 (AFSK) 是一种调制技术,通过它 数字数据由频率(音高)的变化表示 音频音,产生适合通过传输的编码信号 收音机或电话。通常,传输的音频在 两种音调:一种是“mark”,代表二进制;另一个,那个 “空格”,表示二进制零。 ... AFSK 的优点是编码信号可以通过 交流耦合链路,包括最初设计用于 携带音乐或演讲。

【讨论】:

  • 迈克尔,非常感谢你,我不知道有这样的可能性,即使现在你告诉我,很明显这是可能的。无论如何,必须使用方波,而您的回答不符合我的要求。要知道我想要做什么,请阅读:stackoverflow.com/questions/29715866/android-ppm-audio-library
  • 请记住,人类的听觉仅限于大约 20Khz 的频率。音频系统通常不设计用于再现远高于此范围的信号(没有必要,因为人类无论如何都听不到它)。方波具有超过 20KHz 的谐波(或高频分量)。方波包括超出人类听觉和音频系统能力的频率分量。见mathworld.wolfram.com/FourierSeriesSquareWave.html。音频系统并非旨在重现这些信号,也不应期望如此。
  • 我不同意你的看法。取一个 500Hz 的方波,通过一个通带滤波器,将 50/100Hz 以下的所有频率和 10/20kHz 以上的所有频率都切除。然后查看时域中的结果。您将再次看到一个方形波形,但有一点圆角。在这种情况下,您所说的事实确实很小。事实上,看看我的问题上显示的 iphone 音频输出有多好(还有大多数手机,也试试你的)。
  • 这很有趣。可能会有所帮助,但不确定 - andrewhazelden.com/blog/2011/08/analyzing-rc-radio-ppm-signals
  • 这篇文章既不是答案,也不是关于音频系统如何处理 500Hz 方波的声明。
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多