【问题标题】:Convert MP3 to WAV将 MP3 转换为 WAV
【发布时间】:2019-03-11 03:50:31
【问题描述】:

我正在尝试将 .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
retcode = subprocess.call(['sox', "C:\\Users\\Desktop\\Audio File\\Call.mp3", 
                           '--rate 16k', '--bits 16', '--channels 1', 
                           "C:\\Users\\Desktop\\Audio File\\Call.wav"])


import subprocess
retcode = subprocess.call(['sox', r'C:\Users\Desktop\Audio File\Call.mp3', 
                           '--rate 16k', '--bits 16', '--channels 1', 
                           r'C:\Users\Desktop\Audio File\Call.wav'])


import subprocess
retcode = subprocess.call(['sox', "C:/Users/Mayank/Desktop/Audio File/Call.mp3", 
                           '--rate 16k', '--bits 16', '--channels 1', 
                           "C:/Users/Desktop/Audio File/Call.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 格式.. .raw 也有同样的问题..
  • 看起来在子进程中找不到“可执行文件” hp, ht, pid, tid = _winapi.CreateProcess(executable, args, # no special security None, None, int(not close_fds), creationflags, env, cwd, startupinfo)

标签: python sox


【解决方案1】:

最后它工作如下

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)

【讨论】:

    【解决方案2】:

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

    如果它不起作用,请查看此link

    【讨论】:

    • 当然可以。你只需要安装正确的库。我一直都这样做。 sudo apt-get install libsox-fmt-mp3 sox file.mp3 file.wav
    猜你喜欢
    • 2017-07-06
    • 2017-08-23
    • 2013-01-17
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多