Skip to content

A simple python framework to process videos automatically, such as generating subtitles.

Notifications You must be signed in to change notification settings

OrangeHan0x01/Shengwen

Repository files navigation

声闻--模块化视音频语音自动操作框架

典型使用场景: 1、识别一个视频中的语音并自动为其添加字幕。

2、识别一个长录音中的语音,按句识别为一个文本文件并得到他们的开始和持续时间

3、替换一个视频中某句话为tts生成/自己录音的内容。

简单介绍:

可以一键实现视频语音翻译到文本文件 或直接用一个文本文件和视频生成带字幕视频 以及其它用户能自定义的有用功能的(可能过度封装)框架/简单系统。

个人用户可以用二步实现简单的从视频生成带字幕视频: 1、ubuntu的python3.6/3.7环境下下运行setup/install.sh(运行前看安装说明) 2、simple_expbypd.py中将输入输出文件路径改成自己的文件名,运行并等待(中途会暂停让你改字幕文件),最终得到你的带字幕视频(可能会被moviepy自动压缩,但moviepy文档说这是无损压缩)。

如果要识别其它语种,建议用户去百度智能云寻找该语种语音识别的api并使用api并修改audio_process中的baiduSR模块。

如果想修改脚本实现自己的功能(以及已经基本封装好的在中途去除背景音,语音合成,或者需要修改字幕位置、颜色、字体等功能),请看一下process_exp.py和audio_process文件夹以及其中的注释。

示例: 安装完成后,修改simple_expbypd.py中的in_pth,out_pth,audio_pth,out_video,运行

$python simple_expbypd.py

,即可将自己的视频自动加入字幕,此外,包括字幕形状颜色大小、语音分割等都能够设置不同参数

稍微麻烦点的介绍: #按步骤划分的主要功能:

1、视频文件格式:环境是在ubuntu下,视频的处理使用了python的moviepy库,moviepy库支持几乎所有常见视频格式,因此不必做视频格式转换,如果有特殊需求的,也可以使用提供的ffmpeg工具进行视频格式转换。

2、提取语音:使用moviepy工具从视频中提取音频文件,之后使用spleeter工具,通过神经网络模型分割语音与背景音的音轨。

3、语音分割:使用基于BIC准则的语音分割工具,将一整段语音分割成以句子为单位的段。

4、语音识别:提供了2种识别方式:paddlespeech离线模型识别和百度api在线识别。

5、语音合成与修改:使用pyttsx3库提供语音合成功能,可以自由调整合成语音的语速和音量,同时也提供录音用的程序和上传录音、在线编辑录音的网页接口,方便从音频中单独截取和修改。

6、视频添加字幕:使用moviepy+ImageMagick进行视频的字幕添加。

框架按照功能划分出各类模块,方便用户进行各种自定义的修改,例如,由于字幕生成与离线模型识别分开,用户可以轻松地通过将模型识别结果输入到'savetools'的'str_save'函数中而不改变框架的其它功能,实现调用自己的离线模型来方便更新换代的目标。

使用此项目时,建议将处理程序放置在与process_exp.py同目录下,否则需要将项目文件夹加入环境变量。

process_exp.py提供了可供快速上手的示例和说明,如果需要修改和自定义,建议阅读audio_process下的说明文件,对每个文件的函数和功能做出了一些解释。

硬件需求: 此项目既可以在专用服务器上使用,也可以在个人电脑上用作个人视音频的处理框架。由于提供了多种语音识别方式,对硬件没有特殊需求,但用户应该根据不同需求和情况选择进行语音识别的方式,windows下使用需要参考安装说明,有数个软件需要手动安装,ubuntu下可以直接运行安装脚本。

未来可能更新: 可能用paddlespeech的tts代替原本tts,尝试提前初始化paddle的模型(√)

2022/2/6更新:subgui模块,可以以透明窗口显示字幕文件,若想使用该功能,只要确保安装了pyqt5模块,并用一句subgui.subgui(字幕文件地址)执行即可。

项目中这些部分参考使用了github开源项目:

BIC语音分割:https://github.com/zheyejs/speech_seg

由于部分库的更新,原本一些函数无法在我使用的python及这些库版本下运行,因此我修改了一些代码,引入了新的库来更换原本的函数。

paddlespeech离线语音识别:https://github.com/PaddlePaddle/PaddleSpeech

About

A simple python framework to process videos automatically, such as generating subtitles.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published