无法使用python读取.WAV文件

时间:2019-01-22 06:48:25

标签: python-3.x gnuradio-companion

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

我可以清楚地听到录制的信号,但是读取数据会得到一个空([])值。

python代码

  function setDate(data){
    var d = new Date(data.event_details.event_start_date); 
    var month = d.getMonth();
    var m =  ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    console.log(m[month]);
  }

这给出

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()

有人可以帮助我发现问题所在吗?是因为.grc文件中的记录wav块设置中的任何错误还是python文件中的任何错误?请帮助

非常感谢 先生

1 个答案:

答案 0 :(得分:0)

#! /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('')

在Linux环境中,我将以上内容放入了一个名为playsound.py的文件中。 然后我执行了(在cmdline提示符下)

$ 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 

file.wav是我方便的一些现有.wav文件。 我以前尝试过     对于我的数据:         打印(i) 就像您所做的那样,也可以,但是输出太多。

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