如何找到两个不同音频样本之间的比例?
How do I find a scale between two different audio samples?
我打算制作一个分析音频样本的通用应用程序。当我说 'universal' 时,我的意思是任何技术(Javascript、C、Java 等)都可以使用它。
基本上我在 iOS 上使用 Apple 的 AVFoundation 创建了一个应用程序,它实时接收长度为 512(bufferSize = 512)的麦克风样本。
在 Python,我使用 PyAudio 做了同样的事情,但不幸的是我收到了非常不同的值...
看样本:
Samples of bufferSize = 512 on iOS:
[0.0166742969, 0.0181432627, 0.0184620395, 0.0182254426, 0.0181945376, 0.0185530782, 0.0192517322, 0.0199078992, 0.0204724055, 0.0212812237, 0.022370765, 0.0230008475, 0.0225516111, 0.0213304944, 0.0200473778, 0.019841563, 0.0206818394, 0.0211550407, 0.0207783803, 0.020227218 ....
Samples of bufferSize = 512 on Python:
[ -52. -32. -11. 10. 24. 31. 37. 38. 33. 25. 10. -4.
-18. -26. -29. -39. ....
更多:
Python代码:
https://gist.github.com/denisb411/7c6f601175e8bb9f735d8aa43a0db340
在这两种情况下,我使用的是同一台计算机。
我如何找到一种方法使它们'convert'(不知道这个词是否合适)达到相同的比例?
如果我对问题不清楚,请通知我。
音频样本通常以 16 或 24 位进行量化。但是对于这些样本可以取的值范围有不同的约定:
- 如果您要量化 8 位,样本通常会存储为无符号字节,范围从 0 到 255
- 如果您要量化 16 位,样本通常会存储为 2 的补码有符号整数,范围从 -32768 到 32767
- 如果要量化 24 位,样本通常会存储为无符号整数
- 等等
基本上,当您决定存储样本时,您有两个参数:
- 有符号或无符号
- 整型或浮点型
各有优缺点。例如,存储在 [-1, 1] 范围内的浮点数的优点是将两个样本相乘将始终在 [-1, 1]...
的相同范围内
因此,要回答您的问题,您只需更改打开 PyAudio 流的格式。目前,您使用 format=pyaudio.paInt16
。尝试更改它 pyaudio.paFloat32
,您应该获得与 iOS 实施相同的数据。
我打算制作一个分析音频样本的通用应用程序。当我说 'universal' 时,我的意思是任何技术(Javascript、C、Java 等)都可以使用它。 基本上我在 iOS 上使用 Apple 的 AVFoundation 创建了一个应用程序,它实时接收长度为 512(bufferSize = 512)的麦克风样本。 在 Python,我使用 PyAudio 做了同样的事情,但不幸的是我收到了非常不同的值...
看样本:
Samples of bufferSize = 512 on iOS:
[0.0166742969, 0.0181432627, 0.0184620395, 0.0182254426, 0.0181945376, 0.0185530782, 0.0192517322, 0.0199078992, 0.0204724055, 0.0212812237, 0.022370765, 0.0230008475, 0.0225516111, 0.0213304944, 0.0200473778, 0.019841563, 0.0206818394, 0.0211550407, 0.0207783803, 0.020227218 ....
Samples of bufferSize = 512 on Python:
[ -52. -32. -11. 10. 24. 31. 37. 38. 33. 25. 10. -4.
-18. -26. -29. -39. ....
更多:
Python代码:
https://gist.github.com/denisb411/7c6f601175e8bb9f735d8aa43a0db340
在这两种情况下,我使用的是同一台计算机。
我如何找到一种方法使它们'convert'(不知道这个词是否合适)达到相同的比例?
如果我对问题不清楚,请通知我。
音频样本通常以 16 或 24 位进行量化。但是对于这些样本可以取的值范围有不同的约定:
- 如果您要量化 8 位,样本通常会存储为无符号字节,范围从 0 到 255
- 如果您要量化 16 位,样本通常会存储为 2 的补码有符号整数,范围从 -32768 到 32767
- 如果要量化 24 位,样本通常会存储为无符号整数
- 等等
基本上,当您决定存储样本时,您有两个参数:
- 有符号或无符号
- 整型或浮点型
各有优缺点。例如,存储在 [-1, 1] 范围内的浮点数的优点是将两个样本相乘将始终在 [-1, 1]...
的相同范围内因此,要回答您的问题,您只需更改打开 PyAudio 流的格式。目前,您使用 format=pyaudio.paInt16
。尝试更改它 pyaudio.paFloat32
,您应该获得与 iOS 实施相同的数据。