Python将视频转为文字(speech_recognition库)
Python将视频转为文字(speech_recognition库)
tags
Python
status
Published
type
Post
summary
将视频里的语音转成文字,方便快速做学习笔记~。推荐两个提取视频文字的工具。
date
Jun 4, 2021
slug
learning-python-video-to-text
category
技术分享

前言

用python实现将视频中的说话内容转换成文字,可以用以下两种方案:
  1. 提取视频字幕:往往视频作者都会在视频底部加上字幕,以便于提升观看体验,我们可以利用这点,通过python的图像库,截取视频图像,再通过文字OCR识别图像上字幕,转写成文字。
  1. 视频→音频→文字:有的视频是没有字幕的,这时我们可以利用python的视频、音频媒体库,将视频源文件转成音频格式,再对音频格式进行语音识别文字。

功能实现

1.整体思路

  1. 读取媒体文件(视频或者音频)
  1. 根据媒体文件类型统一转成WAV格式的音频
  1. 将音频分割成30秒以内的短音频(有利于提高调用成功率,并支持多线程转换)
  1. 调用语音转文字服务,将音频转为文字,存入临时的txt文本中
  1. 将所有文本按照顺序合并成一个文本

2.依赖三个

  • speech_recognition,语音识别;支持 google、ibm、bing等多家的语音转写开放接口,本文使用的 Google的 Web Speech API。
    • notion image
      💡
      speech_recognition 说明:
      以上几个库只有 recognition_sphinx 与CMU Sphinx 支持引擎脱机工作,其他六个都需要连接互联网。 SpeechRecognition 自身附带了 Google Web Speech API 的默认 API 密钥,可直接使用它。其他几个 API 都需要使用 API 密钥或用户名/密码组合进行身份验证。
  • pydub, 音频格式转换;
  • VideoFileClip , 视频格式转换;

3.项目源码地址

https://github.com/tlyong1992/Video2Text 以下是主方法代码片段:
def convert_to_text(media_path, output_path='./output'):
    """
    将指定的音频或视频文件转换为文本
    :param media_path: 源文件路径
    :param output_path: 输出目录
    :return:
    """
    try:
        # 获取文件名作为项目名
        project_name = get_file_name(media_path)[0]

        # 创建输出文件夹
        output_path = r'./output/' + project_name
        if not os.path.exists(output_path):
            os.makedirs(output_path)

        # 统一预处理文件 转Wav
        voice_path = convert_media_to_wave(media_path)

        # 根据音频时长分割,过长的文件无法转换
        split_file_array = split_voice_file(voice_path, project_name, output_path)

        # 批量音频转文字
        text_array = convert_audios_to_text(split_file_array)

        # 将文本文件组,合并成一个文档
        combine_text(text_array, output_path + '/' + project_name + '.txt')
    except Exception as e:
        logging.error(traceback.format_exc())

4.已知缺陷

  1. 使用谷歌音频转写接口,使用时需要科学上网
  1. 转换后的音频分段比较奇怪,因为是按照30秒强行切开的,而不是按照段落
  1. 不支持自动添加标点符号

调用演示

  1. 根据原文件格式,将mp4,mp3等文件统一转wav
notion image
  1. 将音频文件分割
notion image
  1. 批量调用API转换文字
notion image
  1. 合并文本文件
split目录下是被分割后的文件,最终合并成一个txt文档
notion image

写在后面

网上自然有提供一些在线视频转文字的服务,比如微信轻抖小程序提取视频文案,以及蜜蜂剪辑的在线视频转文字。相比之下这个python小程序的转换效果还有很大的优化空间。
notion image
蜜蜂剪辑
蜜蜂剪辑
蜜蜂剪辑 视频提取文案
蜜蜂剪辑 视频提取文案
  • Python
  • 什么是财商?生命不息,阅读不止