Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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 将MP3转换为WAV_Python_Sox - Fatal编程技术网

Python 将MP3转换为WAV

Python 将MP3转换为WAV,python,sox,Python,Sox,我正在尝试将.mp3文件转换为.wav格式。当我在“命令提示符”中使用下面的命令时,我能够获得所需的输出。它提供了.wav格式的输出文件 sox "C:\Users\Desktop\Audio File\Call.mp3" --rate 16k --bits 16 --channels 1 "C:\Users\Mayank\Desktop\Audio File\Call.wav" 我试图通过Python做同样的事情。以下是代码: import subprocess retcode = subp

我正在尝试将.mp3文件转换为.wav格式。当我在“命令提示符”中使用下面的命令时,我能够获得所需的输出。它提供了.wav格式的输出文件

sox "C:\Users\Desktop\Audio File\Call.mp3" --rate 16k --bits 16 --channels 1 "C:\Users\Mayank\Desktop\Audio File\Call.wav"
我试图通过Python做同样的事情。以下是代码:

import subprocess
retcode = subprocess.call(['sox', 'C:\Users\Desktop\Audio File\Call.mp3', 
                           '--rate 16k', '--bits 16', '--channels 1', 
                           'C:\Users\Desktop\Audio File\Call.wav'])
这样做时,我的错误率会降低。我是python新手,请告诉我如何实现这一点:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
我尝试使用双“\”而不是“\”,然后我得到下面的错误

FileNotFoundError: [WinError 2] The system cannot find the file specified
我还尝试了以下所有选项。。它们都给出相同的错误“找不到指定的文件”


最后,它的工作原理如下

import subprocess
sox = 'C:/Program Files (x86)/sox-14-4-2/sox.exe'

infile = 'C:/Users/Desktop/Audio File/Call.mp3'
outfile = 'C:/Users/Desktop/Audio File/Call.wav'
extra = '--rate 16k --bits 16 --channels 1'

command = """{0} "{1}" {2} "{3}" """.format(sox,infile,extra,outfile)
subprocess.call(command)

sox不支持mp3到wav的转换。 要将mp3转换为wav,您可以使用下面提到的命令。它将完美地工作

pip install pydub

apt-get install ffmpeg
MP3到WAV转换

from os import path
from pydub import AudioSegment

# files                                                                         
src = "transcript.mp3"
dst = "test.wav"

# convert wav to mp3                                                            
sound = AudioSegment.from_mp3(src)
sound.export(dst, format="wav")

如果它不起作用,请检查此选项。

使用前斜杠或原始字符串
'C:/Users/Desktop/Audio File/Call.mp3'
,或避开反斜杠
'C:\\Users\\Desktop\\Audio File\\Call.mp3'
r'C:\Users\Desktop\Audio File\Call.mp3'
'\U
是一个unicode标识符,请投票关闭,因为这是一个输入错误。注意,您还需要对输出路径执行相同的操作。关于第二个错误,文件是否存在?我编辑了我的问题。。我也尝试过所有这些选择。。它们都给出了相同的错误。仍然无法纠正此问题:(问题:你为什么要这样做?MP3是一种压缩格式,所以根据定义,你不会在音频质量上得到任何改善,只是一个更大的文件。我需要这个文件来将其提供给google speech-2-text api…原始格式..与.raw有同样的问题..看起来在子流程中它无法找到“可执行文件”hp,ht,pid,tid=_winapi.CreateProcess(可执行文件,args,#无特殊安全性None,None,int(不关闭_fds),creationflags,env,cwd,startupinfo)当然可以。你只需要安装合适的库。我一直都在这样做。sudo apt get install libsox-fmt-mp3 sox file.mp3 file.wav
from os import path
from pydub import AudioSegment

# files                                                                         
src = "transcript.mp3"
dst = "test.wav"

# convert wav to mp3                                                            
sound = AudioSegment.from_mp3(src)
sound.export(dst, format="wav")