Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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 scipy.fft与某些声音文件挂起_Python_Numpy_Scipy_Fft - Fatal编程技术网

Python scipy.fft与某些声音文件挂起

Python scipy.fft与某些声音文件挂起,python,numpy,scipy,fft,Python,Numpy,Scipy,Fft,运行此简单脚本时,scipy.fft似乎挂起: import scipy from scipy.io import wavfile sound = 'sounds/silence/iPhone5.wav' fs, data = wavfile.read(sound) print scipy.fft(data) 在某些文件上。例如,尝试使用文件 我注意到了几件事: 从交互式解释器运行单个命令不会挂起 与其他声音文件一起运行并不总是挂起脚本(但不只是此文件不起作用) 有时我会收到WAVFILE警

运行此简单脚本时,
scipy.fft
似乎挂起:

import scipy
from scipy.io import wavfile

sound = 'sounds/silence/iPhone5.wav'
fs, data = wavfile.read(sound)
print scipy.fft(data)
在某些文件上。例如,尝试使用文件

我注意到了几件事:

  • 从交互式解释器运行单个命令不会挂起
  • 与其他声音文件一起运行并不总是挂起脚本(但不只是此文件不起作用)
  • 有时我会收到WAVFILE警告:块不被理解,但它似乎与它发生的时间无关
  • 如果我用Ctrl+C终止脚本,我得到的结果就好像它从未被卡住一样
  • 使用
    wave
    audiolab
    打开文件会得到相同的结果

  • 这是一个bug还是我做错了什么?

    这应该是一个评论,但是没有足够的空间

    您可以进行更多的调试,这可能会有所帮助。 (假设您使用的是某种类似unix的操作系统)

  • 当程序卡住时,它是空闲还是占用大量CPU?您可以使用“top”或类似的选项进行检查
  • 当程序出现卡滞时,它在做什么?你能得到堆栈跟踪吗?要么使用gdb之类的调试器,要么使用其他工具
  • 我猜第一步应该是什么。在网上搜索你的症状。如果它是一个bug,那么它很可能已经被发现并报告了。甚至可能已经修好了 通过查看堆栈跟踪,应该可以看到程序是否在等待某些东西、是否在某个地方陷入循环或只是在做大量工作。
    它还可以告诉您问题是在python代码、C扩展还是其他地方。用于读取堆栈跟踪当然是一个加号。:)

    检查data.shape的值以查找挂起系统的文件。如果您的数据长度恰好是一个素数,或者是几个大素数的乘积,那么FFT算法在加速DFT计算方面就无能为力了。如果用零填充数据,或将数据调整到最接近的2次方,那么一切都应该运行得更快更快。

    感谢您的输入。当进程卡在上面时,它确实占用了很多CPU,但是没有堆栈跟踪——它不会抛出任何错误。如果我按Ctrl+C-break键,它只输出正确的结果。运行pdb并没有提供更好的洞察力——仍然停留在同一条线上。当然,谷歌搜索是我做的第一件事。检查
    data.shape的值,查找挂起系统的文件。如果您的数据长度恰好是一个素数,或者是几个大素数的乘积,那么FFT算法在加速DFT计算方面就无能为力了。如果你用零填充,或者将数据调整到最接近的2次方,那么一切都应该运行得更快、更快。请注意,谢谢。当Ctrl+C'ing终端时,我得到的结果不是正确的,但可能是在计算过程中达到的结果。如果你想把你的评论变成一个答案,我很乐意接受。