提取視頻中的音頻 Python只需要三行代碼!
身處數(shù)據(jù)爆炸增長的信息時代,各種各樣的數(shù)據(jù)都飛速增長,視頻數(shù)據(jù)也不例外。我們可以使用 python 來提取視頻中的音頻,而這僅僅需要安裝一個體量很小的 python 庫,然后執(zhí)行三行代碼!
語音數(shù)據(jù)在數(shù)據(jù)分析領域極為重要。比如可以分析語義、口音、根據(jù)人的情緒等等??梢詰糜谄梅治?、謊話檢測等等。
一、提取音頻
需要用到 python 的 moviepy 庫
moviepy的 github 地址:https://github.com/Zulko/moviepy
命令行 pip 安裝上 moviepy 即可!
pip install moviepy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
提取音頻:假設有一個 mp4 文件路徑為"D:\python\pycharm2020\my_program\video_process\test_01.mp4",我們想提取其中的音頻保存到"D:\python\pycharm2020\my_program\video_process\vst01.mp3",三行 Python 代碼實現(xiàn)如下:
import moviepy.editor as mpy # 截取背景音樂 audio_background = mpy.AudioFileClip(r'D:\python\pycharm2020\my_program\video_process\test_01.mp4').subclip(1, 60) audio_background.write_audiofile(r'D:\python\pycharm2020\my_program\video_process\vst01.mp3')
結果如下:
執(zhí)行上面的三行代碼,就會發(fā)現(xiàn)音頻文件已經成功提取到指定文件夾啦~ ~這里的視頻格式和音頻格式都支持其他格式,比如讀取 mp4 格式視頻,抽取其中的背景音樂保存為 MP3 格式音頻。
二、引力波繪制
數(shù)據(jù)來源:
- http://python123.io/dv/grawave.html
- http://python123.io/dv/H1_Strain.wav
- http://python123.io/dv/L1_Strain.wav
- http://python123.io/dv/wf_template.txt
從配置文檔中讀取時間相關數(shù)據(jù)
import numpy as np # 科學計算所用的numpy庫 import matplotlib.pyplot as plt # 繪圖所用的庫matplotlib from scipy.io import wavfile # 讀取波形文件所用的庫 rate_h, hstrain = wavfile.read(r"H1_Strain.wav", "rb") # 讀取音頻文件 rate_l, lstrain = wavfile.read(r"L1_Strain.wav", "rb") # reftime, ref_H1 = np.genfromtxt('GW150914_4_NR_waveform_template.txt').transpose() reftime, ref_H1 = np.genfromtxt('wf_template.txt').transpose() # 使用python123.io下載txt文件
構造應變數(shù)據(jù)
htime_interval = 1 / rate_h ltime_interval = 1 / rate_l fig = plt.figure(figsize=(12, 6)) # 創(chuàng)建大小為12*6的繪圖空間 # 丟失信號起始點 htime_len = hstrain.shape[0] / rate_h # 讀取數(shù)據(jù)第一維的長度,得到函數(shù)在坐標軸上總長度 htime = np.arange(-htime_len / 2, htime_len / 2, htime_interval) # (起點,終點,時間間隔)
使用來自 “H1” 探測器的數(shù)據(jù)作圖
plth = fig.add_subplot(221) # 設置繪圖區(qū)域 plth.plot(htime, hstrain, 'r') # 畫出以時間為x軸,應變數(shù)據(jù)為y軸的圖像,‘y'為黃色 plth.set_xlabel('Time (seconds)') plth.set_ylabel('H1 Strain') plth.set_title('H1 Strain')
繪制 L1 Strain 和Template
ltime_len = lstrain.shape[0] / rate_l ltime = np.arange(-ltime_len / 2, ltime_len / 2, ltime_interval) pltl = fig.add_subplot(222) pltl.plot(ltime, lstrain, 'k') pltl.set_xlabel('Time (seconds)') pltl.set_ylabel('L1 Strain') pltl.set_title('L1 Strain') pltref = fig.add_subplot(212) pltref.plot(reftime, ref_H1, 'purple') pltref.set_xlabel('Time (seconds)') pltref.set_ylabel('Template Strain') pltref.set_title('Template') fig.tight_layout() # 自動調整圖像外部邊緣
保存并顯示圖像
plt.savefig("Gravitational_Waves_Original.png") # 保存圖像為png格式 plt.show() plt.close(fig)
結果如下:
以上就是提取視頻中的音頻 Python只需要三行代碼!的詳細內容,更多關于python 提取視頻中的音頻的資料請關注腳本之家其它相關文章!
相關文章
python數(shù)據(jù)分析之單因素分析線性擬合及地理編碼
這篇文章主要介紹了python數(shù)據(jù)分析之單因素分析線性擬合及地理編碼,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作
ssh是一個協(xié)議,OpenSSH是其中一個開源實現(xiàn),paramiko是Python的一個庫,實現(xiàn)了SSHv2協(xié)議(底層使用cryptography)。這篇文章主要介紹了使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作,需要的朋友可以參考下2019-12-12python中split(),?os.path.split()和os.path.splitext()的用法
本文主要介紹了python中split(),?os.path.split()和os.path.splitext()的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02詳解python異步編程之asyncio(百萬并發(fā))
這篇文章主要介紹了詳解python異步編程之asyncio(百萬并發(fā)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07python如何在一個py文件中獲取另一個py文件中的值(一個或多個)
這篇文章主要介紹了python如何在一個py文件中獲取另一個py文件中的值(一個或多個),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08使用Python Tkinter創(chuàng)建文件生成工具的操作步驟
我們將使用Python的Tkinter模塊創(chuàng)建一個簡單的文件生成工具,這個工具可以用來創(chuàng)建Excel、文本、Python腳本和Word文檔等不同類型的文件,感興趣的朋友可以參考下2024-04-04