首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解从daw导出的wav文件

了解从daw导出的wav文件
EN

Stack Overflow用户
提问于 2020-12-04 02:32:56
回答 1查看 37关注 0票数 0

我已经从Audacity生成了一个440 as的音调,振幅为1,持续1秒,如下所示:

我知道这将在1秒内创建440个峰值,振幅为1。这里我看到它是一个32位文件,44100 to是采样率,这意味着每秒有44100个样本。振幅是1,这是预期的,因为这是我选择的。

我不明白的是,这个振幅的单位是多少?当右击它显示线性(-1到+1)时,有一个选择dB的选项,它显示(0到-60到0),我不明白这是如何转换的!

现在,当我在python scipy中使用这个wav文件来读取wav并获取时间和振幅的值时,如何匹配或获取我读取wav文件时所生成的内容与所看到的内容之间的关系?峰值为振幅32767.987724003342频率439.99002267573695

我在python中使用的代码是

代码语言:javascript
复制
wavFileName ="440Hz.wav"
sample_rate, sample_data = wavfile.read(wavFileName)
print ("Sample Rate or Sampling Frequency is", sample_rate," Hz")
l_audio = len(sample_data.shape)
print ("Channels", l_audio,"Audio data shape",sample_data.shape,"l_audio",l_audio)
if l_audio == 2:
    sample_data = sample_data.sum(axis=1) / 2
N = sample_data.shape[0]
length = N / sample_rate
print ("Duration of audio wav file in secs", length,"Number of Samples chosen",sample_data.shape[0])
time =np.linspace(0, length, sample_data.shape[0])
sampling_interval=time[1]-time[0]
EN

回答 1

Stack Overflow用户

发布于 2020-12-04 04:14:29

请注意,在audacity中,当您在保存文件之前创建了1秒的音频,并选择了1.0,它显示有符号的16位整数,因此振幅从-1到+1表示PCM格式的WAV文件通过改变有符号整数从最大负数到最大正数来存储原始音频,因为2^16是65536,所以有符号的16位整数范围是-32768到32767,换句话说,从-2^15到( +2^15 -1) ...为了更好地绘制,我建议你选择一个比一秒短得多的时间段,比方说0.1秒…一旦你对此表示同意,然后将其恢复到使用整整一秒的时间,这在有44100个样本的曲线图上是难以想象的

代码语言:javascript
复制
import os
import scipy.io
import scipy.io.wavfile
import numpy as np
import matplotlib.pyplot as plt

myAudioFilename = '/home/olof/sine_wave_440_Hz.wav'
   
samplerate, audio_buffer = scipy.io.wavfile.read(myAudioFilename)

duration = len(audio_buffer)/samplerate

time = np.arange(0,duration,1/samplerate) #time vector


plt.plot(time,audio_buffer)
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title(myAudioFilename)
plt.show()

这里是0.1秒的440 Hz,使用带符号的16位注意,Y轴的振幅范围与上面提到的最小到最大有符号整数值范围相匹配

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65132019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档