WAV 文件 (.wav) 和 WAVE 音频文件 (.wave) 之间有什么区别?

What are the differences between a WAV file (.wav) and a WAVE audio file (.wave)?

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

但是,现在我需要在项目中实现录音,当我使用 PyAudio 录制吉他输入时,它会将音频保存为 WAVE 音频文件 (.wave) 文件,该文件无法在程序中操作,也无法使用 playsound 库播放。当我尝试从我的文件管理器播放它时,它只能使用 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)

正如 O.P 指出的那样。 "wave" 和 "wav" 是一回事。但文件管理器应用程序无法识别 wave 扩展名。解决方案只是将 "file.wave" 重命名为 "file.wav".