Linux下 有没有批量将 WAV 格式文件转换为 MP3格式文件的工具软件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下 有没有批量将 WAV 格式文件转换为 MP3格式文件的工具软件?相关的知识,希望对你有一定的参考价值。

要CLI软件,不要图形界面下的软件

比较有名和常用的工具有Mencoder和Ffmpeg
http://www.ylmf.net/linux/tips/2010111810219.html追问

是音频格式的文件

追答

http://www.5dlinux.com/article/2/2011/linux_48132.html
我搞错了,看看这个工具吧

追问

我想要的是CLI软件,不要图形界面的软件

参考技术A 是想播放音乐吗?可以用sox的。 参考技术B 你好,我经常用的是酷狗2012,那上面有个“工具”选项,其中一个工具是“格式转换”,点击开始加载,然后添加文件,就可以开始了,还有很多选项,可以按需求设置。谢谢!

如何将 wav 音频文件格式(样本宽度)转换为 8 位格式?

【中文标题】如何将 wav 音频文件格式(样本宽度)转换为 8 位格式?【英文标题】:How to convert a wav audio file format (sample width) into 8 bits format? 【发布时间】:2020-06-10 00:36:17 【问题描述】:

我正在使用录制语音的 Python gui,我需要将 wav 文件的宽度格式设置为 8 位。当我运行录音时,除了噪音什么都没有!

import tkinter as tk
import threading
import pyaudio
import wave
from tkinter import *
import tkinter.font as font
from tkinter.filedialog import asksaveasfilename

class App():
    chunk = 1024
    sample_format = pyaudio.paUInt8
    channels = 2
    fs =44100 

frames = []

def __init__(self, master):
    self.isrecording = False
    myFont = font.Font(weight="bold")
    self.button1 = tk.Button(audio_window, text='Record', command=self.startrecording,
                             height=2, width=20, bg='#0052cc', fg='#ffffff')
    self.button2 = tk.Button(audio_window, text='stop', command=self.stoprecording,
                             height=2, width=20, bg='#0052cc', fg='#ffffff')
    self.button1['font'] = myFont
    self.button2['font'] = myFont
    self.button1.place(x=30, y=30)
    self.button2.place(x=280, y=30)

def startrecording(self):
    self.p = pyaudio.PyAudio()
    self.stream = self.p.open(format=self.sample_format, channels=self.channels,
        rate=self.fs, frames_per_buffer=self.chunk, input=True)
    self.isrecording = True

    print('Recording')
    t = threading.Thread(target=self.record)
    t.start()

def stoprecording(self):
    self.isrecording = False
    print('recording complete')

    self.filename = asksaveasfilename(initialdir="/", title="Save as",
        filetypes=(("audio file", "*.wav"), ("all files", "*.*")),
        defaultextension=".wav")

    wf = wave.open(self.filename, 'wb')
    wf.setnchannels(self.channels)
    wf.setsampwidth(self.p.get_sample_size(self.sample_format))
    wf.setframerate(self.fs)
    wf.writeframes(b''.join(self.frames))
    
def record(self):
    while self.isrecording:
        data = self.stream.read(self.chunk)
        self.frames.append(data)
        print("does it")

audio_window = tk.Tk()
audio_window.title('recorder')
app = App(audio_window)
audio_window.geometry('520x120')
audio_window.mainloop()

这是我使用的录制 GUI。我需要录制为 8 位,因为我需要稍后对其进行加密。

【问题讨论】:

您的问题与tkinter 无关,因此您应该提供一个未使用它的minimal reproducible example。答案很可能与使用 pyaudiowave 模块有关。 首先尝试不使用tkinterthread,因为它们与您的问题无关。而且您将拥有可以在新问题中显示的最少工作代码,人们可能会尝试运行它来解决问题。 顺便说一句:你不能在开始时使用pyaudio.paInt8 吗? 谢谢大家。我是新用户。关于我的查询有什么想法吗? @furas 我试过了,但是录音变成了噪音 【参考方案1】:

你可以像这样使用soundfile.write():

import librosa  # just to demo, not necessary, as you already have the data
import soundfile

# read some wave file, so that y is the date and sr the sample rate
y, sr = librosa.load('some.wav')

# write to a new wave file with sample rate sr and format 'unsigned 8bit'
soundfile.write('your.wav', y, sr, subtype='PCM_U8')

要获取特定格式的可用子类型,请使用:

>>> soundfile.available_subtypes('WAV')
'PCM_16': 'Signed 16 bit PCM', 'PCM_24': 'Signed 24 bit PCM', 'PCM_32': 'Signed 32 bit PCM', 'PCM_U8': 'Unsigned 8 bit PCM', 'FLOAT': '32 bit float', 'DOUBLE': '64 bit float', 'ULAW': 'U-Law', 'ALAW': 'A-Law', 'IMA_ADPCM': 'IMA ADPCM', 'MS_ADPCM': 'Microsoft ADPCM', 'GSM610': 'GSM 6.10', 'G721_32': '32kbs G721 ADPCM'

【讨论】:

请将您使用的代码添加到原始问题中,以便阅读。 它会抖动吗? 是的@pipll 我添加了我在问题中使用的程序 @bipll AFAIK,Python soundfile 基于libsoundfile,它似乎没有抖动。但我可能错了。

以上是关于Linux下 有没有批量将 WAV 格式文件转换为 MP3格式文件的工具软件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将wav转换成mp3格式

如何将wav转换成mp3音频格式?

将任意音频格式文件转换成16K采样率16bit的wav文件

如何将 wav 音频文件格式(样本宽度)转换为 8 位格式?

使用python+ffmpeg批量转换格式

如何将wav格式声音文件转换为文本文件