久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用AI將m4b格式音頻批量轉(zhuǎn)換為mp3格式

 AIGC部落 2025-01-14 發(fā)布于廣東

Deepseek中輸入提示詞:

寫一個(gè)m4b格式文件(帶有章節(jié)的 AAC 編碼的音頻文件)轉(zhuǎn)換為mp3格式的Python腳本,,具體步驟如下:

用戶輸入m4b格式音頻的文件地址,,比如:"F:\有聲英文書\Life 3.0 Being Human in the Age of Artificial Intelligence (Unabridged).m4b"

接受這個(gè)文件地址,,然后將其轉(zhuǎn)換為mp3格式的音頻,;

新建一個(gè)子文件夾,,文件名名稱為m4b格式音頻的主文件名,;

讀取m4b格式音頻中的章節(jié)信息,,將這個(gè)mp3文件按照m4b格式音頻中的章節(jié)分割成多個(gè)mp3音頻,,保存在剛才新建的子文件夾中,;

如果m4b格式音頻中沒有章節(jié)信息,就按照每段1個(gè)小時(shí)時(shí)長(zhǎng)將這個(gè)mp3文件分割,;

注意:每一步都要輸出信息到屏幕上

如果用戶輸入的不是m4b格式音頻,,而是mp3音頻文件,就跳過轉(zhuǎn)換步驟,,直接按照每段1個(gè)小時(shí)時(shí)長(zhǎng)將其分割,;

Deepseek的回復(fù):

要實(shí)現(xiàn)將帶有章節(jié)的 m4b 格式音頻轉(zhuǎn)換為 mp3 格式,并根據(jù)章節(jié)信息分割成多個(gè) mp3 文件的 Python 腳本,,可以使用 ffmpeg-python 庫和 mutagen 庫來讀取章節(jié)信息,。以下是實(shí)現(xiàn)該功能的完整腳本:

import os

import ffmpeg

import re

from mutagen.mp4 import MP4, MP4StreamInfoError

from mutagen.mp3 import MP3

from mutagen.id3 import ID3, TIT2, TALB, TPE1, TCON, TYER

def convert_m4b_to_mp3(input_path):

# 提取文件名和擴(kuò)展名

file_name, _ = os.path.splitext(os.path.basename(input_path))

# 創(chuàng)建子文件夾

output_folder = os.path.join(os.path.dirname(input_path), file_name)

os.makedirs(output_folder, exist_ok=True)

print(f"Created folder: {output_folder}")

# 檢查輸入文件是否已經(jīng)是mp3格式

if input_path.lower().endswith('.mp3'):

print(f"Input file is already an mp3 file: {input_path}")

output_mp3_path = input_path

else:

# 轉(zhuǎn)換為mp3格式

output_mp3_path = os.path.join(output_folder, f"{file_name}.mp3")

print(f"Converting {input_path} to {output_mp3_path}...")

ffmpeg.input(input_path).output(output_mp3_path, acodec='libmp3lame').run()

print(f"Conversion complete: {output_mp3_path}")

# 讀取章節(jié)信息并分割mp3文件

split_mp3_by_chapters_or_hour(output_mp3_path, output_folder)

def split_mp3_by_chapters_or_hour(input_mp3_path, output_folder):

# 提取文件名

file_name = os.path.basename(input_mp3_path).split('.')[0]

# 讀取章節(jié)信息

try:

audio = MP4(input_mp3_path)

chapters = audio.get('\xa9chp')

except MP4StreamInfoError:

chapters = None

if chapters:

print(f"Found {len(chapters)} chapters in {input_mp3_path}")

split_mp3_by_chapters(input_mp3_path, output_folder, chapters)

else:

print("No chapters found in the m4b file. Splitting by hour.")

split_mp3_by_hour(input_mp3_path, output_folder)

def split_mp3_by_chapters(input_mp3_path, output_folder, chapters):

# 提取文件名

file_name = os.path.basename(input_mp3_path).split('.')[0]

# 分割mp3文件,每章節(jié)一段

for i, chapter in enumerate(chapters):

start_time = chapter[0]

end_time = chapter[1] if i < len(chapters) - 1 else None

chapter_name = chapter[2]

output_segment_path = os.path.join(output_folder, f"{file_name}_chapter{i+1}_{chapter_name}.mp3")

print(f"Processing chapter {i+1} '{chapter_name}' starting at {start_time} seconds...")

if end_time:

ffmpeg.input(input_mp3_path, ss=start_time, to=end_time).output(output_segment_path).run()

else:

ffmpeg.input(input_mp3_path, ss=start_time).output(output_segment_path).run()

print(f"Chapter {i+1} saved as {output_segment_path}")

def split_mp3_by_hour(input_mp3_path, output_folder):

# 提取文件名

file_name = os.path.basename(input_mp3_path).split('.')[0]

# 計(jì)算每小時(shí)的秒數(shù)

hour_in_seconds = 3600

# 獲取音頻的總時(shí)長(zhǎng)

probe = ffmpeg.probe(input_mp3_path)

duration = float(probe['format']['duration'])

# 計(jì)算需要分割的段數(shù)

num_segments = int(duration // hour_in_seconds) + 1

print(f"Splitting {input_mp3_path} into {num_segments} segments...")

for i in range(num_segments):

start_time = i * hour_in_seconds

output_segment_path = os.path.join(output_folder, f"{file_name}_part{i+1}.mp3")

print(f"Processing segment {i+1} starting at {start_time} seconds...")

ffmpeg.input(input_mp3_path, ss=start_time).output(output_segment_path, t=hour_in_seconds).run()

print(f"Segment {i+1} saved as {output_segment_path}")

if __name__ == "__main__":

# 用戶輸入m4b或mp3文件路徑

input_path = input("Enter the path to the m4b or mp3 file: ")

# 檢查文件是否存在

if not os.path.exists(input_path):

print(f"File not found: {input_path}")

else:

# 轉(zhuǎn)換并分割音頻

convert_m4b_to_mp3(input_path)

腳本說明:

輸入路徑:用戶輸入 m4b 或 mp3 文件的路徑,。

創(chuàng)建子文件夾:根據(jù) m4b 或 mp3 文件的主文件名創(chuàng)建一個(gè)子文件夾,。

轉(zhuǎn)換為 mp3:如果輸入文件是 m4b 格式,則使用 ffmpeg-python 將其轉(zhuǎn)換為 mp3 格式,,并保存在新建的子文件夾中,。如果輸入文件已經(jīng)是 mp3 格式,則跳過轉(zhuǎn)換步驟,。

讀取章節(jié)信息:使用 mutagen 庫讀取 m4b 文件中的章節(jié)信息,。

分割 mp3 文件:根據(jù)章節(jié)信息將 mp3 文件分割成多個(gè) mp3 文件,,并保存在同一子文件夾中。

依賴庫:

ffmpeg-python:用于調(diào)用 ffmpeg 進(jìn)行音頻處理,。

mutagen:用于讀取 m4b 文件中的章節(jié)信息,。

安裝依賴:

bash

復(fù)制

pip install ffmpeg-python mutagen

運(yùn)行腳本:

將腳本保存為 convert_m4b_to_mp3.py,然后在終端或命令行中運(yùn)行:

bash

復(fù)制

python convert_m4b_to_mp3.py

注意事項(xiàng):

確保 ffmpeg 已安裝并配置在系統(tǒng)路徑中,,以便 ffmpeg-python 可以調(diào)用它,。

腳本會(huì)自動(dòng)創(chuàng)建子文件夾并保存轉(zhuǎn)換后的文件,因此請(qǐng)確保輸入路徑正確且有寫權(quán)限,。

如果 m4b 文件中沒有章節(jié)信息,,腳本會(huì)提示并跳過分割步驟。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多