WAV 文件 (.wav) 和 WAVE 音频文件 (.wave) 有啥区别?

Posted

技术标签:

【中文标题】WAV 文件 (.wav) 和 WAVE 音频文件 (.wave) 有啥区别?【英文标题】:What are the differences between a WAV file (.wav) and a WAVE audio file (.wave)?WAV 文件 (.wav) 和 WAVE 音频文件 (.wave) 有什么区别? 【发布时间】:2020-06-01 15:14:56 【问题描述】:

我正在尝试使用 PyAudio 库通过我的 USB 音频接口在 python 项目中录制吉他音频。当我使用 Audacity 等音频应用程序保存音频时,我会得到一个 WAV (.wav) 文件,可以使用 Groove 音乐、Windows 媒体播放器等应用程序播放该文件,并且我可以根据需要操作这些文件。

但是,现在我需要在项目中实现录音,当我使用 PyAudio 录制吉他输入时,它将音频保存为 WAVE 音频文件 (.wave) 文件,该文件无法在程序中进行操作,也无法使用播放声音库。当我尝试从我的文件管理器播放它时,它只会使用 Itunes 播放,而 Groove 音乐和 windows 媒体播放器不支持它。

我在网上查到的任何地方都将 WAVE 和 WAV 文件描述为同一个东西,所以我不确定我为什么会遇到这个问题。我的代码如下所示。任何帮助或建议将不胜感激!

import pyaudio
import wave
from playsound import playsound


CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "live_guitar_input.wave"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("NOW RECORDING")

frames = []
for i in range(0, int(RATE/CHUNK*RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

print("Finished Recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
playsound(WAVE_OUTPUT_FILENAME)

【问题讨论】:

尝试重命名文件.wav 【参考方案1】:

正如 O.P. 所指出的,“wave”和“wav”是一回事。但文件管理器应用程序无法识别波形扩展名。解决方法就是将“file.wave”重命名为“file.wav”。

【讨论】:

感谢您的帮助!

以上是关于WAV 文件 (.wav) 和 WAVE 音频文件 (.wave) 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

MMIO----Wav格式文件解析

Python 从零开始制作自己的声音 - wave模块读写wav文件详解

Python3正确修改wav音频数据

下采样 wav 音频文件

python绘制wav音频文件波形图

转载:WAV header