提取视频中的音频——python三行程序搞定「建议收藏」

提取视频中的音频——python三行程序搞定「建议收藏」写在开头提取音频安装python包提取音频分析音频安装python包读取音频matplotlib画信号强度图librosa画信号强度图写在开头  身处数据爆炸增长的时代,各种各样的数据都飞速增长,视频数据也不例外。我们可以使用python来提取视频中的音频,而这仅仅需要安装一个体量很小的python包,然后执行三行程序!  语音数据在数据分析领域极为重要。比如可以分析语义、口音、根据人的情绪等等。可以应用于偏好分析、谎话检测等等。提取音频  需要..

大家好,又见面了,我是你们的朋友全栈君。

写在开头

  身处数据爆炸增长的时代,各种各样的数据都飞速增长,视频数据也不例外。我们可以使用 python 来提取视频中的音频,而这仅仅需要安装一个体量很小的python包,然后执行三行程序!
  语音数据在数据分析领域极为重要。比如可以分析语义、口音、根据人的情绪等等。可以应用于偏好分析、谎话检测等等。

提取音频

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

安装 python 包

安装 moviepy,cmd 或 bash 输入

pip install moviepy

提取音频

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

from moviepy.editor import AudioFileClip
my_audio_clip = AudioFileClip("e:/chrome/my_video.mp4")
my_audio_clip.write_audiofile("e:/chrome/my_audio.wav")

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

分析音频

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

安装 python 包

安装 librosa,cmd 或 bash 输入

pip install librosa

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

读取音频

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

import librosa
audio, freq = librosa.load('e:/chrome/my_audio.wav')
time = np.arange(0, len(audio)) / freq
print(len(audio), type(audio), freq, sep="\t")

下图是我电脑的示例,可以看到读取到了采样频率每个采样点的信号强度,采样点共 2121210,频率为 22050,音频长度约 96 秒示例图

matplotlib 画信号强度图

bash 输入

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

下图是本人电脑示例:示例图

librosa 画信号强度图

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

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

下图是我电脑的示例:示例图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144149.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • WPF-WrapPanel「建议收藏」

    WPF-WrapPanel「建议收藏」WrapPanel和StackPanel类似都是按照顺序排序。WrapPanel是以一次一行或一列的方式排布控件。默认是行,从左到右排列,排满后再排下一行。每一行以最高的控件来拉伸。转载于:https://www.cnblogs.com/bingbingzhe/p/7146210.html…

    2022年7月22日
    13
  • 走进计算机病毒-基础知识「建议收藏」

    走进计算机病毒-基础知识「建议收藏」计算机病毒可通过注册表来完成其目的

    2022年5月3日
    49
  • TD-SCDMA特点_TDD-LTE

    TD-SCDMA特点_TDD-LTETD-SCDMA的提出比其他标准较晚,这给其产品成熟性带来一定的挑战,但在另一方面,TD-SCDMA吸纳了九十年代以来移动通信领域最先进的技术,在一定程度上代表了技术的发展方向,具有前瞻性和强大的后发优势。与其他3G标准相比,TD-SCDMA系统及其技术有着如下突出优势:  频谱效率高  TD-SCDMA系统综合采用了联合检测、智能天线和上行同步等先进技术,系统内的…

    2022年10月3日
    2
  • 【20】进大厂必须掌握的面试题-50个Hadoop面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 1.关系数据库和HDFS之间的基本区别是什么? 以下是HDFS和关系数据库之间的主要区别: 类别 关系数据库管理系统…

    2021年6月24日
    72
  • jediscluster.set加锁_redislock

    jediscluster.set加锁_redislock一、前置配置需要已经集成成功JedisCluster本人已实践的参考:https://blog.csdn.net/NullToSay/article/details/109813194二、定义RedisLock类importorg.apache.commons.lang.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importredis.clients.jedis.JedisClust.

    2022年10月14日
    2
  • 查看linux执行的命令记录_docker history显示完整信息

    查看linux执行的命令记录_docker history显示完整信息前言我们每次敲打linux命令的时候,有时候想用之前用过的命令,一般情况下,我们都会按↑↓箭头来寻找历史的命令记录,那如果我想用1天前执行的某条命令,难道还要按↑100次?显示这样是不现实的,我们可

    2022年8月6日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号