Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 无法使用python读取.WAV文件_Python 3.x_Gnuradio Companion - Fatal编程技术网

Python 3.x 无法使用python读取.WAV文件

Python 3.x 无法使用python读取.WAV文件,python-3.x,gnuradio-companion,Python 3.x,Gnuradio Companion,我正在尝试读取一个FM信号,它被记录为WAV文件,使用GNU radio Companion,使用python。我正在附加使用的.grc文件 我可以清楚地听到记录的信号,但读取数据会给出一个空([])值 python代码 import soundfile as sf data, fs = sf.read('/home/fm_record_RSM_10_01_2019_dat.wav') for i in data: print(i) 这给 data array([], dty

我正在尝试读取一个FM信号,它被记录为WAV文件,使用GNU radio Companion,使用python。我正在附加使用的.grc文件

我可以清楚地听到记录的信号,但读取数据会给出一个空([])值

python代码

import soundfile as sf
data, fs = sf.read('/home/fm_record_RSM_10_01_2019_dat.wav')
for i in data:
    print(i)
这给

data
     array([], dtype=float64) 
fs 
     96000
使用以下代码时

import wave
input_wave_file= wave.open('/home/fm_record_RSM_10_01_2019_dat.wav', 'r')
nc,sw,fr,nf,ct,cn = input_wave_file.getparams()
下面给出了另一个错误

Error                                     Traceback (most recent call last)
<ipython-input-3-5009fe3506e7> in <module>()
      1 import wave
      2 
----> 3 input_wave_file= wave.open('/home/fm_record_RSM_10_01_2019_dat.wav', 'r')
      4 nc,sw,fr,nf,ct,cn = input_wave_file.getparams()
      5 frame_data = input_wave_file.readframes(5)

~/anaconda3/lib/python3.7/wave.py in open(f, mode)
    508             mode = 'rb'
    509     if mode in ('r', 'rb'):
--> 510         return Wave_read(f)
    511     elif mode in ('w', 'wb'):
    512         return Wave_write(f)

~/anaconda3/lib/python3.7/wave.py in __init__(self, f)
    162         # else, assume it is an open file object already
    163         try:
--> 164             self.initfp(f)
    165         except:
    166             if self._i_opened_the_file:

~/anaconda3/lib/python3.7/wave.py in initfp(self, file)
    131             raise Error('file does not start with RIFF id')
    132         if self._file.read(4) != b'WAVE':
--> 133             raise Error('not a WAVE file')
    134         self._fmt_chunk_read = 0
    135         self._data_chunk = None

Error: not a WAVE file
错误回溯(最近一次调用上次)
在()
1输入波
2.
---->3 input_wave_file=wave.open('/home/fm_record_RSM_10_01_2019_dat.wav',r')
4 nc、sw、fr、nf、ct、cn=input_wave_file.getparams()
5帧数据=输入波形文件。读取帧(5)
~/anaconda3/lib/python3.7/wave.py处于打开状态(f模式)
508模式='rb'
509“r”、“rb”中的if模式:
-->510返回波读数(f)
511“w”、“wb”中的elif模式:
512返回波写入(f)
~/anaconda3/lib/python3.7/wave.py in\uuuuu init\uuuu(self,f)
162#否则,假设它已经是一个打开的文件对象
163尝试:
-->164自初始化fp(f)
165除:
166如果self.\u i\u打开了\u文件:
initfp中的~/anaconda3/lib/python3.7/wave.py(self,文件)
131 raise错误('文件不以RIFF id'开头)
132如果自文件读取(4)!=b‘挥手’:
-->133 raise错误('不是波形文件')
134自组块读取=0
135自身数据块=无
错误:不是波形文件
有人能帮我找出问题所在吗?是因为.grc文件中记录wav块的设置有误还是python文件中有误?好心帮忙

非常感谢 Msr

file.wav是我手头的一些现有的.wav文件。 我以前试过 对于数据中的i: 印刷品(一) 正如您所做的那样,这也起了作用,但是输出太多了

我认为您应该检查您提供的文件名是否指向有效的WAV文件。 例如,您列出的路径是“/home/filename.wav”。
通常至少是“/home/username/filename.wav”

如果我没有错的话,关于这个问题还有另一个参考资料。检查这里:我没有足够的声誉发表评论,但请检查目录位置。您是保存为16位还是64位?数据显示数组([],dtype=float64)我的.wav文件来自gnuradio companion。数据显示数组([],dtype=float64)
#! /usr/bin/env python3
import soundfile as sf
import wave
import sys
if len(sys.argv) < 2:
    print("Expected filename.wav on cmdline")
    quit(1)
data, fs = sf.read(sys.argv[1])
for i in range(10):
    print(i)

print('...')
input_wave_file= wave.open(sys.argv[1], 'r')
nc,sw,fr,nf,ct,cn = input_wave_file.getparams()
print('nc', nc) 
print('sw', sw) 
print('fr', fr) 
print('nf', nf) 
print('ct', ct) 
print('cn', cn)
chunk = 1024
data = input_wave_file.readframes(chunk)
print('data[0:10] =', data[0:10])
print('data[0:10] =', end='')
for i in range(10):
    print(data[i],' ',end='')
print('')
$ chmod +x playsound.py
$ ./playsound.py file.wav
[ 0.06454468  0.05557251]
[ 0.06884766  0.05664062]
[ 0.0552063   0.06777954]
[ 0.04733276  0.0708313 ]
[ 0.05505371  0.065979  ]
[ 0.05358887  0.06677246]
[ 0.05621338  0.06045532]
[ 0.04891968  0.06298828]
[ 0.04986572  0.06817627]
[ 0.05410767  0.06661987]
...
nc 2
sw 2
fr 44100
nf 32768
ct NONE
cn not compressed
data[0:10] = b'C\x08\x1d\x07\xd0\x08@\x07\x11\x07'
data[0:10] =67  8  29  7  208  8  64  7  17  7