我正在编写一个程序来解析 WAV 文件头并将信息打印到屏幕上。在编写程序之前,我正在做一些研究hexdump -n 48 sound_file_8000hz.wav00000000 52 49 46 46 bc af 01 00 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |00000010 10 00 00 00 01 00 01 00 >40 1f 00 00< 40 1f 00 00 |........@...@...|00000020 01 00 08 00 64 61 74 61 98 af 01 00 81 80 81 80 |....data........|hexdump -n 48 sound_file_44100hz.wav00000000 52 49 46 46 c4 ea 1a 00 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |00000010 10 00 00 00 01 00 02 00 >44 ac 00 00< 10 b1 02 00 |........D.......|00000020 04 00 10 00 64 61 74 61 a0 ea 1a 00 00 00 00 00 |....data........|两个文件中 > 和 “40 1f 00 00”如何转换为 8000Hz,“44 ac 00 00”如何转换为 44100Hz? channel 数和音频格式等信息可以直接从转储中读取。我找到了一个 Python名为 WavHeader 的脚本可以正确解析两个文件中的采样率。这是脚本的核心: bufHeader = fileIn.read(38) # Verify that the correct identifiers are present if (bufHeader[0:4] != "RIFF") or \ (bufHeader[12:16] != "fmt "): logging.debug("Input file not a standard WAV file") return # endif stHeaderFields = {'ChunkSize' : 0, 'Format' : '', 'Subchunk1Size' : 0, 'AudioFormat' : 0, 'NumChannels' : 0, 'SampleRate' : 0, 'ByteRate' : 0, 'BlockAlign' : 0, 'BitsPerSample' : 0, 'Filename': ''} # Parse fields stHeaderFields['ChunkSize'] = struct.unpack('<L', bufHeader[4:8])[0] stHeaderFields['Format'] = bufHeader[8:12] stHeaderFields['Subchunk1Size'] = struct.unpack('<L', bufHeader[16:20])[0] stHeaderFields['AudioFormat'] = struct.unpack('<H', bufHeader[20:22])[0] stHeaderFields['NumChannels'] = struct.unpack('<H', bufHeader[22:24])[0] stHeaderFields['SampleRate'] = struct.unpack('<L', bufHeader[24:28])[0] stHeaderFields['ByteRate'] = struct.unpack('<L', bufHeader[28:32])[0] stHeaderFields['BlockAlign'] = struct.unpack('<H', bufHeader[32:34])[0] stHeaderFields['BitsPerSample'] = struct.unpack('<H', bufHeader[34:36])[0]当我不能使用 hexdump 时,我不明白这如何提取正确的采样率?我正在使用此页面中有关 WAV 文件格式的信息: https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ 最佳答案 “40 1F 00 00”字节相当于一个整数,其十六进制值为 00001F40(记住整数以小端格式存储在 WAVE 文件中)。十六进制值 00001F40 等同于十进制值 8000。类似地,“44 AC 00 00”字节相当于一个整数,其十六进制值为 0000AC44。十六进制值 0000AC44 等同于十进制值 44100。关于python - 解析WAV文件头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4207326/ 10-12 13:36