三行?完成音频提取

举报
nimo的小舔狗 发表于 2022/05/10 23:01:58 2022/05/10
【摘要】 🚀🚀🚀博主最近在回顾上学期的工程概论课程,发现有些课程是真的又长重点又少,因此想出了讲视频中的音频单独提取,并将音频转化成文字,这样看重点就快了(叫我小天才) 提取音频 需要用到 python 包 moviepy,这里是moviepy 的 github 地址: https://github.com/Zulko/moviepy...

🚀🚀🚀博主最近在回顾上学期的工程概论课程,发现有些课程是真的又长重点又少,因此想出了讲视频中的音频单独提取,并将音频转化成文字,这样看重点就快了(叫我小天才)

提取音频

需要用到 python 包 moviepy,这里是moviepy 的 github 地址:

https://github.com/Zulko/moviepy

安装 python 包

安装 moviepy,cmd 或 bash 输入

pip install moviepy
 

提取音频

假设有一个 mp4 文件路径为"c:/ac.mp4",我们想提取其音频保存到"“c:/ac.wav”",那么三行程序为:


  
  1. from moviepy.editor import AudioFileClip
  2. my_audio_clip = AudioFileClip("c:/ac.mp4")
  3. my_audio_clip.write_audiofile("c:/ac.wav")

执行上面的三行程序,就会发现音频文件已经成功提取到指定文件夹了~ 这里的视频格式和音频格式都支持其他格式,比如读取 m4v 格式视频,保存 MP3 格式音频

分析音频

可以使用 librosa 包来分析音频,这里是librosa 的 github 地址:

https://github.com/librosa/librosa

安装 python 包

安装 librosa,cmd 或 bash 输入

pip install librosa
 

需要说明,librosa 包本身不支持 MP3 格式,需要一些相关包的支持。官网上说使用 conda 安装则自动安装 MP3 支持的相关包。具体请去librosa 的 github 地址了解。

读取音频

假设有一个 wav 文件路径为"c:/ac.wav"。科普一下音频数据的内容,可以认为记录采样频率和每个采样点的信号强度两个部分即可构成一个音频文件。数据流可理解为一个数组,按照字节存储。

下面我们读取音频


  
  1. import librosa
  2. audio, freq = librosa.load('c:/ac.wav')
  3. time = np.arange(0, len(audio)) / freq
  4. print(len(audio), type(audio), freq, sep="\t")

matplotlib 画信号强度图

bash 输入


  
  1. import matplotlib.pyplot as plt
  2. fig, ax = plt.subplots()
  3. ax.plot(time, audio)
  4. ax.set(xlabel='Time(s)', ylabel='Sound Amplitude')
  5. plt.show()

librosa 画信号强度图

当然我们可以使用 librosa 库的工具来分析,可以修掉音频首尾的其他信息,画信号强度图的方式如下:


  
  1. import librosa.display
  2. audio, _ = librosa.effects.trim(audio)#Trim leading and trailing #silence from an audio signal.
  3. librosa.display.waveplot(audio, sr=freq)
  4. plt.show()

文章来源: blog.csdn.net,作者:渣渣ye,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yyfloveqcw/article/details/124217758

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。