簡體   English   中英

使用python自動執行任務

[英]Automate tasks with python

我正在尋找一種方法來使用python自動執行外部程序中的任務。

我有AAC格式的大型音頻文件。 我需要將它們轉換為mp3,然后放大它們(避免失真)。

我用pydub librarie編寫了一個程序,它可以很好地處理小文件,但我的文件太大(超過2小時或200mb)並且我的內存耗盡(因為我認為lib存儲了RAM中的完整文件)。 我不能將文件拆分成塊,因為我不能因為上一個原因再次合並它們,我需要將文件整合在一起。

所以,我想編寫一個程序,打開另一個程序將文件轉換為mp3(mediahuman音頻轉換器),然后,用另一個程序(WavePad音頻編輯器)放大轉換后的文件,但我不知道這是否可能。

在目前,我是手動完成的,但這需要很長時間的等待,並且需要不到10次點擊(在整個過程中傳播),這很乏味。

我離開了我寫的程序。 我將其轉錄為刪除一些不相關且與此過程無關的函數,另外我將注釋,變量和其他內容翻譯成英文,因此它可能有一些錯誤,但原始程序運行良好:

import glob
import os
from pydub import AudioSegment

#convert to mp3 128 bits
sound = AudioSegment.from_file("input-file.aac")
sound.export("output-file.mp3", format="mp3", bitrate="128k")

#sound.max_dBFS shows how far below the limit the highest sample is (in dB)
sound = AudioSegment.from_file("output.mp3", format="mp3")
max_gain_without_distortion = -1 * sound.max_dBFS

#increase volume by "max_gain_without_distortion" dB
from pydub.playback import play
song = AudioSegment.from_mp3("output-file.mp3")
louder_song = song + max_gain_without_distortion

#save louder song
louder_song.export("output.mp3", format='mp3')

PC規格:///操作系統:windows 10 pro 64位/// RAM:4gb /// CPU:dualcore 3ghz /// PYTHON VERSION:3.7.1 /// Pydub版本:v0.23.1-0-g46782a9 // / ffmpeg / avlib版本:“Build:ffmpeg-20190219-ff03418-win32-static”///

正如評論中所商定的那樣,作為一種解決方案,我將建議使用命令行工具: FFmpeg 這是您需要的命令:

ffmpeg -i input-file.aac -b:v 128k -filter:a loudnorm output.mp3

使用loudnorm 您也可以按照文檔中的說明直接應用收益,但是應該會得到較差的結果。 標准化可以通過多種方式完成,我建議閱讀這篇文章

通過將其與例如find . -name '*.wav' -type f相結合find . -name '*.wav' -type f find . -name '*.wav' -type f您可以輕松查找和轉換目錄樹中的所有文件。

如果你一直在使用Python,你可以檢查Python綁定 基本:

import ffmpeg
ffmpeg.input('stereo.aac').output('mono.mp3').run()

最初我打算建議使用soxSound eXchange,瑞士軍刀的音頻處理 它不是Python,但有Python綁定pysox 然而,事實證明它不支持aac格式(仍然有許多其他格式)。 我認為無論如何都提到它可能會很有趣,因為人們可以先將ffmpeg轉換為更流行的格式,然后將管道結果轉換為sox 后者有更多選項可用於修改音頻流。

將wav轉換為mp3並重新采樣為128kbit:

sox -r 128k input-file.wav output-file.mp3

OP要求“通過max_gain_without_distortion dB增加音量”,為此我們可以使用gainnorm文檔中所述

sox -r 128k input-file.wav output-file.mp3 gain −n -3

在docs之后, -n選項將音頻標准化為0dB FSD; 它通常與負增益-dB一起使用,以使音頻被歸一化到低於0dB的給定電平

sox −−norm -r 128k input-file.wav output-file.mp3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM