为什么使用 udacity gui 从 wav 文件中提取样本并且 scipy 给出不同的值?
Why extract sample from wav file using udacity gui and scipy give different values?
我有一个 7 秒的音频 wav 文件:full.wav。
我提取了其中的一小部分样本。我 select 使用 audacity 的时间框架并标记它。我导出标签(包含样本的开始和结束时间)。
1/ 我使用 audacity 菜单导出示例并将其保存为 sample_audacity.wav
2/ 我在 python 脚本中加载 full.wav 使用 scipy.io.wavfile.read
我将样本保存完整[开始:结束]。它给了我 sample_python.wav
当我听sample_audacity.wav和sample_python.wav时,我听到了同样的声音。
但是如果我使用 scipy.io.wavfile.read 加载它们,我会得到两个文件的非常不同的值。
sample_python.wav 的值是 full.wav 值的子集 - 这是正常的。
但是 sample_audacity.wav 的值不是。
有人知道 why/how Audacity 在保存数据摘录时正在修改初始数据 (full.wav) 吗?
如果可能的话,如何大胆地给我一个与初始数据具有相同值(子集)的样本?
例如,sample_audacity.wav
的前100个值
[128 122 124 123 134 138 143 142 139 135 144 149 155 156 148 144 143 144
151 152 159 152 160 150 157 151 155 153 155 156 154 151 145 139 128 132
124 131 130 129 123 115 104 100 94 94 88 85 78 74 65 59 52 48
43 45 46 45 40 30 19 10 6 7 14 15 12 0 -8 1 23 51
72 63 55 26 23 20 31 36 40 35 27 22 15 15 7 9 1 -2
-4 0 -3 -4 -18 -25 -25 -12 -1 -9]
sample_audacity.wav 的形状:
(36296,)
sample_python.wav
的前 100 个值
[128 127 124 122 125 132 139 143 142 138 137 142 150 155 155 149 144 142
145 150 154 156 156 155 155 154 153 153 154 155 156 154 151 145 138 131
128 127 129 131 129 123 114 105 99 95 93 89 84 79 73 66 59 52
47 44 45 46 45 39 31 19 10 5 8 13 16 11 0 -7 0 23
52 69 68 50 30 20 22 30 37 39 35 28 21 16 13 10 7 2
-3 -3 -1 -1 -6 -17 -26 -24 -12 -2]
sample_python.wav 的形状:
(36297,)
大胆 2.1.2
Ubuntu
首选项import/export:
导出设置:
两个文件的媒体信息:
将文件导入 audacity 后,它会转换为 32 位格式。当您 re-export 将文件恢复为 16 位时,audacity 会根据偏好对音频进行抖动处理。此页面上有更多详细信息:https://wiki.audacityteam.org/wiki/Dither
这个导出设置不在一个明显的位置。转到 Preferences/Quality,然后在 "High Quality Conversion" 标题下抖动。如果将其设置为 None,您应该得到与 python.
相同的结果
我有一个 7 秒的音频 wav 文件:full.wav。
我提取了其中的一小部分样本。我 select 使用 audacity 的时间框架并标记它。我导出标签(包含样本的开始和结束时间)。
1/ 我使用 audacity 菜单导出示例并将其保存为 sample_audacity.wav
2/ 我在 python 脚本中加载 full.wav 使用 scipy.io.wavfile.read 我将样本保存完整[开始:结束]。它给了我 sample_python.wav
当我听sample_audacity.wav和sample_python.wav时,我听到了同样的声音。
但是如果我使用 scipy.io.wavfile.read 加载它们,我会得到两个文件的非常不同的值。 sample_python.wav 的值是 full.wav 值的子集 - 这是正常的。
但是 sample_audacity.wav 的值不是。
有人知道 why/how Audacity 在保存数据摘录时正在修改初始数据 (full.wav) 吗?
如果可能的话,如何大胆地给我一个与初始数据具有相同值(子集)的样本?
例如,sample_audacity.wav
的前100个值[128 122 124 123 134 138 143 142 139 135 144 149 155 156 148 144 143 144
151 152 159 152 160 150 157 151 155 153 155 156 154 151 145 139 128 132
124 131 130 129 123 115 104 100 94 94 88 85 78 74 65 59 52 48
43 45 46 45 40 30 19 10 6 7 14 15 12 0 -8 1 23 51
72 63 55 26 23 20 31 36 40 35 27 22 15 15 7 9 1 -2
-4 0 -3 -4 -18 -25 -25 -12 -1 -9]
sample_audacity.wav 的形状: (36296,)
sample_python.wav
的前 100 个值[128 127 124 122 125 132 139 143 142 138 137 142 150 155 155 149 144 142
145 150 154 156 156 155 155 154 153 153 154 155 156 154 151 145 138 131
128 127 129 131 129 123 114 105 99 95 93 89 84 79 73 66 59 52
47 44 45 46 45 39 31 19 10 5 8 13 16 11 0 -7 0 23
52 69 68 50 30 20 22 30 37 39 35 28 21 16 13 10 7 2
-3 -3 -1 -1 -6 -17 -26 -24 -12 -2]
sample_python.wav 的形状: (36297,)
大胆 2.1.2 Ubuntu
首选项import/export:
导出设置:
两个文件的媒体信息:
将文件导入 audacity 后,它会转换为 32 位格式。当您 re-export 将文件恢复为 16 位时,audacity 会根据偏好对音频进行抖动处理。此页面上有更多详细信息:https://wiki.audacityteam.org/wiki/Dither
这个导出设置不在一个明显的位置。转到 Preferences/Quality,然后在 "High Quality Conversion" 标题下抖动。如果将其设置为 None,您应该得到与 python.
相同的结果