Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 ValueError:缓冲区大小必须是元素大小的倍数_Python_Audio - Fatal编程技术网

Python ValueError:缓冲区大小必须是元素大小的倍数

Python ValueError:缓冲区大小必须是元素大小的倍数,python,audio,Python,Audio,我是python的新手,我正在尝试使用API对音频文件进行去噪。下面是我正在使用的代码,在执行时它给了我一个错误“ValueError:缓冲区大小必须是元素大小的倍数”。有人能帮我解决这个问题吗 import requests import scipy.io.wavfile import numpy as np file_name = 'audio.mp3' files = {'file': open(file_name, 'rb')} denoise_level = 20 querystr

我是python的新手,我正在尝试使用API对音频文件进行去噪。下面是我正在使用的代码,在执行时它给了我一个错误“ValueError:缓冲区大小必须是元素大小的倍数”。有人能帮我解决这个问题吗

import requests
import scipy.io.wavfile
import numpy as np

file_name = 'audio.mp3'
files = {'file': open(file_name, 'rb')}

denoise_level = 20
querystring = {"denoise_control": denoise_level}

headers = {
    'x-api-key': "my-api-key"
}

url = "https://noise-reduction-service.p.rapidapi.com/denoise"

response = requests.request("POST", url, files=files, headers=headers, params=querystring)

content = np.frombuffer(response.content, dtype=np.int32)

sample_rate = 44100
scipy.io.wavfile.write('denoised_speech.wav', sample_rate, content)

提前谢谢

np.frombuffer()
尝试从API获取响应并将其解释为4字节整数(32位)序列时,会发生这种情况。在这种情况下,响应需要是4字节的倍数。如果不是这样,numpy将引发异常。(例如,如果流末尾还有3个字节,它应该怎么做?)

如果没有更多关于API的信息,很难对此进行调查。你检查过回复了吗?我可以想到三个可能的问题:

  • 响应可能是错误消息。还请检查
    响应。状态\u代码
  • 响应是否只包含二进制流?处理后的数据可能嵌入到json文档中
  • 返回的音频真的被编码为原始的4字节整数吗?它可以被编码为2字节整数。(也可以是mp3。在这种情况下,不使用
    scipy.io.wavfile.write()