【1】Python 视频文字识别提取 - Mp4转换成Mp3

news/2024/11/24 2:30:45/

我们有时候会对文字视频文字进行提取,网络上没有很好的方法。所有我用Python写了。

 先把Mp4转换成Mp3   MP42MP3.py 

# encoding:utf-8    #设置编码方式
import hashlib
import json
import os
import random
import time
import requests
from requests_toolbelt import MultipartEncoder
from moviepy.video.io.VideoFileClip import VideoFileClip# 分隔符,上传文件需要
boundary = '----WebKitFormBoundarydXKxqoF1Oi2HdYCd'header = {'accept': 'application/json, text/javascript, */*; q=0.01','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36','content-type': 'application/x-www-form-urlencoded; charset=UTF-8','origin': 'http://voice.xunjiepdf.com','sec-fetch-site': 'cross-site','sec-fetch-mode': 'cors','sec-fetch-dest': 'empty','accept-language': 'zh-CN,zh;q=0.9'
}# 上传时用这个header,这个boundary要和请求中files的boundary保持一致,否则上传会报错
update_header = {'accept': 'application/json, text/javascript, */*; q=0.01','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36','content-type': 'multipart/form-data; boundary=' + boundary,'accept-language': 'zh-CN,zh;q=0.9'
}# 用于请求的基地址BaseUrl
BASE_URL = 'https://user.api.hudunsoft.com'# md5转Text
MD5_TO_TEXT_URL = BASE_URL + '/v1/alivoice/md5Totext'# 查询任务进度
TASK_INFO = BASE_URL + '/v1/alivoice/getTaskInfo'# 上传相关的url
UPLOAD_AUDIO_FILE = BASE_URL + '/v1/alivoice/uploadaudiofile?r=' + str(random.uniform(0, 1))# 这里只用到了一个post请求,所以封装成一个方法
def post(url, body, header):requests.packages.urllib3.disable_warnings()return requests.post(url=url, data=body, headers=header, verify=False)# 任务开始、结束、删除,都使用这个方法,只需要传入file_info及action动作即可  action:'Begin'、'End'、'Delete'
def upload_operate(file_info, action):body = {'action': action,'fileName': file_info['fileName'],'md5': file_info['md5']}return post(UPLOAD_AUDIO_FILE, body, header)# 根据文件路径返回文件名称
def get_file_name(file_path):return os.path.basename(file_path)# 计算文件的MD5值
def get_file_md5(filename):m = hashlib.md5()  # 创建md5对象with open(filename, 'rb') as fp:while True:data = fp.read(4096)  # 每次读取4MBif not data:breakm.update(data)  # 更新md5对象fp.close()return m.hexdigest()# 获取文件大小  返回结果单位:byte字节
def get_file_size(filePath):fsize = os.path.getsize(filePath)return fsize# 获取当前任务进度
def get_task_info(file_info):body = {'client': 'web','source': '335','soft_version': 'v3.0.1.1','device_id': '33c5ba842f15511aa539830082a32500','taskId': file_info['md5']}res = post(TASK_INFO, body, header)if res.status_code == 200:info = json.loads(res.text)print(info)if info['code'] == 0:fileTextList = info['data']['file_text']s = ''for i in fileTextList:s = s + i['text']print('音频转义之后的文字结果为:')print(s)else:print('延时2s轮询查询')time.sleep(2)get_task_info(file_info)else:print(res)# 开始音频转语音任务
def md5_to_text(file_info):body = {'client': 'web','source': '335','soft_version': 'v3.0.1.1','device_id': '33c5ba842f15511aa539830082a32500','md5': file_info['md5'],'fileName': file_info['fileName'],'title': file_info['fileName']}res = post(MD5_TO_TEXT_URL, body, header)# 说明创建转义成文本的任务成功if res.status_code == 200:info = json.loads(res.text)print(info)# 开始查询转义的任务进度get_task_info(file_info)else:print(res)# 删除上传的mp3音频文件任务
def delete_mp3_file(file_info):res = upload_operate(file_info, 'Delete')if res.status_code == 200:print('删除成功')else:print(res)# 结束上传mp3音频文件任务
def stop_upload_mp3_file(file_info):res = upload_operate(file_info, 'End')if res.status_code == 200:info = json.loads(res.text)print(info)# 结束任务成功之后,开始做音频转文字的任务md5_to_text(file_info)else:print(res)# 上传mp3音频文件
def upload_mp3_file(file_info):url = BASE_URL + '/v1/alivoice/uploadaudiofile?r=' + str(random.uniform(0, 1))f = open(file=file_info['filePath'], mode='rb')data = f.read()multipart_encoder = MultipartEncoder(fields={'action': (None, 'Store'),'pos': (None, '0'),'size': (None, str(file_info['size'])),'md5': (None, file_info['md5']),'file': ('blob', data, 'application/octet-stream'),},boundary=boundary)res = post(url, multipart_encoder, update_header)# 说明上传成功if res.status_code == 200:info = json.loads(res.text)print(info)# 调用结束上传任务stop_upload_mp3_file(file_info)else:print(res)# 开始mp3音频文件任务
def start_mp3_file(file_info):res = upload_operate(file_info, 'Begin')if res.status_code == 200:info = json.loads(res.text)print(info)if info['pos'] >= 0:# 创建任务成功开始之后,开始上传音频文件upload_mp3_file(file_info)else:# 说明之前已上传成功过,那就直接去创建生成text的任务md5_to_text(file_info)else:print(res)# 将mp4文件转为mp3音频文件,生成路径仍在原路径中(需要先下载moviepy库)
def mp4_to_mp3(path):try:video = VideoFileClip(path)audio = video.audio# 设置生成的mp3文件路径newPath = path.replace('mp4', 'mp3')audio.write_audiofile(newPath)return newPathexcept Exception as e:print(e)return Noneif __name__ == '__main__':# *********MP4文件的路径地址,注意路径转义 每次修改这个路径*********mp4FilePath = '../mp4/九边劳动人口下跌就完全是坏事吗这可能拯救35岁以上的中年人_1080p.mp4'# 将 mp4文件路径,转成的mp3文件路径mp3FilePath = mp4_to_mp3(mp4FilePath)# 创建一个文件信息对象,方面后续读取音频文件信息# file_info = {}# file_info['md5'] = get_file_md5(mp3FilePath)  # mp3对应的md5值# file_info['fileName'] = get_file_name(mp3FilePath)  # MP3文件的文件名称# file_info['size'] = get_file_size(mp3FilePath)     # 文件大小# file_info['filePath'] = mp3FilePath  # 文件路径# # 创建上传MP3文件的任务# start_mp3_file(file_info)


http://www.ppmy.cn/news/633510.html

相关文章

如何把视频语音转换成文字呢?

你在工作中,是否遇到过这样的任务,主管发给你一个视频文件,让你把里面的会议内容整理成文件发给他。如果遇到这样的任务我们需要先听视频在说什么,然后再逐字逐句的手工输入,整理成一个文档。但其实也没必要那么麻烦。…

介绍两种提取视频语音变成文字的方式

怎么提取视频语音变成文字?随着这些年短视频的火爆,越来越多的人开始拍摄了起来。而无论是vlog、美食、游戏还是科技等形式的视频,字幕都是必不可少的。靠手动打字录入不仅麻烦还容易输错,下面给各位介绍两个方便快捷的办法&#…

录音文件转换成文字很难吗?这几个步骤就可以解决烦恼了

对于一些大学生来说,难免会参加一些讲座或者课堂之类的,但有时会来不及做笔记,甚至有些事情一时想不明白。这时不少人会选择先用录音的方式把内容录下来,回去再慢慢听。毕竟作为学生来说,最怕的就是错过了重点知识&…

如何将录音内容转换成文字呢?

不知道大家在日常工作学习中有没有接触过语音转文字的这种操作。不管怎样,小编经常需要进行这种操作。由于小编经常需要记录会议纪要,而当一些同事或领导发言时,对一些内容并不太理解,手工记录不仅速度慢,而且不全面。…

录音怎么转换成文字?这个方法打工人必学

提到录音转文字,不论是学生或是职场人应该都不陌生,因为如今为了防止开会或上课时错漏重点内容,都会将过程进行录音,后期再听取内容手动整理成纯文字版,只不过比较费时费力。 而如今只要借助工具就能轻松实现录音转文…

计算机声音怎么转换,怎么把视频里的声音转换成文字?讯飞听见帮你搞定

之前刚做自媒体视频博主时,做视频最痛苦的并不是拍和剪,而是把视频里的声音转成文字,如果是十几二十秒的视频还好,几分钟就能打好文字,可是碰到要做vlog或者其他一些比较长的视频可就愁了,不仅要重新回顾一…

如何将视频转换成文字

如何将视频转换成文字 今天给大家分享一个云端服务平台 – 360converter.com,一款免费的云端文件格式转换平台,特色的服务是视频转文字,mp4转文字,音频转文字,mp3转文字,YouTube视频下载。 平台简介&#…

录音文件/音频实现mp3等文件语音转换文字txt文档提取文字精准高效识别

音频录音文件实现语音转换识别文字最后文档输出结果 实现对mp3等录音文件进行语音识别成文字,最终获取文档格式或者其它定义格式文件,也可以进行提取数据处理逻辑,轻松实现大文件的语音文字转换功能,精准高效便捷... 功能技术&…