Python语音转文字、音频切割、语音识别


不知道你有没有录过自我介绍的视频,尤其是那种加上PPT播放的长时间视频

可能因为说错一句话就得重来,又或者因为思考而暂停时间太久又得重来,以至于弄了两个小时才做好五分钟的视频

所以就像为了答辩一样,为了让演讲流利不卡壳一遍过,不停的熟读稿子,又或者提前花费大量时间把稿子写好,在录屏的时候对着读

Python语音转文字、音频切割、语音识别

但是光写稿子也要花费了大量的时间啊

所以我想到的方法就是先对着照PPT说一遍并录下来,再将用代码自动将音频自动提取出来转成文字,然后第二遍正式录制视频的时候看着生成的讲稿就不用因为不熟练而卡壳,同时也省去了一个个码字的时间消耗

所以为了更好的去录制视频,这里将上述过程全部用代码流程化分享给大家

   视频提取音频

   音频频率转化、音频切割

   音频转成文字

1视频提取音频

如果你练习时是录的视频,那需要将视频里的语音提取出来,方便后期操作

当然这个过程目前在各个视频剪辑软件里都可以一键分割,例如剪映、必剪、Pr等等

但是当任务量增加的时候,操作就显得非常浪费时间,而用Python的话3行代码就可以提取出来,就算任务量增加最多再加个循环即可

代码如下

from moviepy.editor import AudioFileClip
# 导入视频
my_audio_clip = AudioFileClip("一行玩Python/1012 视频转文字/11.mp4")
# 提取音频并保存
my_audio_clip.write_audiofile("一行玩Python/1012 视频转文字/11.wav")

2音频转文字

提取音频之后就要把音频转成文字了,目前市面上有很多方式都可以快速的将视频里的音频内容转成文字

   科大讯飞、知意等付费平台

   剪映、Pr等剪辑如案件生成字幕

   百度云、腾讯云等国内接口

   GOogle、IBM、Bing等国外接口

   自己造*,语音识别训练

   自己一边听一边打字

虽然说有这么多方法可以去实现这个需求,但任务量增长后,想不花钱,又想不花时间造*,最好的办法就是用现成的接口

百度接口使用

申请百度接口

如果想用百度接口来批量处理,需要

百度语音API地址:https://cloud.baidu.com/doc/SPEECH/index.html

from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = 'xxx'
API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 读取文件
def get_file_content(file_path):
    with open(file_path, 'rb') as fp:
        return fp.read()

# 识别本地文件
result = client.asr(get_file_content('音频.wav' % i), 'wav', 16000, {
    'dev_pid': 1537  # 默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格
})

print(result['result'])

如果你恰巧是用mac录的音频,那就得对音频进行降频处理

因为百度接口只能识别16 kHz的音频,而mac录的是48 kHz的音频,当然用ffmpeg重采样一下就可以

import ffmpeg
ffmpeg.input('输入音频.wav').output('输出音频.wav', ar=16000).run()

如果的你音频比较长,但是百度短语音识别接口支持1分钟以内的音频,这时候需要对音频进行分割处理

from pydub import AudioSegment
from pydub.utils import make_chunks

#blues文件30s
audio = AudioSegment.from_file("voice.wav", "wav")

size = 30000  #切割的毫秒数

chunks = make_chunks(audio, size)  ##将文件切割为59s一块

for i, chunk in enumerate(chunks):
    ##枚举,i是索引,chunk是切割好的文件
    chunk_name = "voice{0}.wav".format(i)
    print(chunk_name)
    ##保存文件
    chunk.export(chunk_name, format="wav")

然后重采样、剪切好的音频循环调用百度API接口就可以完成了~

exe

当然,也有前辈利用百度API直接写成了一个exe来使用

只需要在刚才百度智能云注册申请账号即可使用Python语音转文字、音频切割、语音识别

3最后

而现在互联网的大趋势是视频内容,了解视频相关的应用对于做内容也非常有帮助

之前有前辈分享过如果做短视频创作秘籍,就是把互联网上最火的内容下载个1、200个,然后拿来翻拍,毕竟火过的内容很大概率还会再火

当然有些人会向我过去一样质疑,这tm不是抄袭嘛,但是很多内容本来就可以同主题多形式的,例如别人拍的炒蛋炒饭,那你同样可以翻拍炒蛋炒饭,这有什么不好的吗

而批量下载抖音之前介绍过,现在又可以把这些的视频内容提取出来,下一步就可以进行批量翻拍,离实现一个小目标岂不是越来越近了

技术永不眠,下期见~


上一篇:根据配置文件加载js依赖模块(JavaScript面试题)


下一篇:element(vue.js)+django 整合