当前位置: 首页 > news >正文

网站的做公司电商平台网址

网站的做公司,电商平台网址,网络营销的步骤,seo系统优化目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 翻译3. 格式转换4. 音频切割5. 语音识别6. 文本切割7. main函数 系统测试工程源代码下载其它资料下载 前言 本项目基于百度语音识别API#xff0c;结合了语音识别、视频转换音频识别以及语句停顿… 目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 翻译3. 格式转换4. 音频切割5. 语音识别6. 文本切割7. main函数 系统测试工程源代码下载其它资料下载 前言 本项目基于百度语音识别API结合了语音识别、视频转换音频识别以及语句停顿分割识别等多种技术从而实现了高效的视频字幕生成。 首先我们采用百度语音识别API通过对语音内容进行分析将音频转换成文本。这个步骤使得我们能够从语音中提取出有意义的文本信息。 其次我们运用视频转换音频识别技术将视频中的音频部分提取出来并进行同样的文本识别操作。这样我们就可以对视频中的声音内容进行准确的文字化。 另外我们还引入了语句停顿分割识别用于识别语音中的语句边界和停顿从而更准确地切分出每个语句的内容。 综合上述技术我们成功地实现了视频字幕的生成。通过对视频中的语音内容进行逐帧识别、转换和分割我们能够准确地将语音内容转化为文本并在视频上生成相应的字幕。 本项目不仅能够为视频内容提供字幕也为内容创作者提供了方便使得他们能够更好地将视频内容传达给观众。同时这也为包括听障人士在内的用户提供了更友好的观看体验。 总体设计 本部分包括系统整体结构图和系统流程图。 系统整体结构图 系统整体结构如图所示。 系统流程图 系统流程如图所示。 运行环境 在Windows环境下完成Python 3所需的配置并运行代码即可。 模块实现 本项目包括7个模块数据预处理、翻译、格式转换、音频切割、语音识别、文本切割和main函数下面分别给出各模块的功能介绍及相关代码。 1. 数据预处理 基于百度语音API得到所需要的APP_ID、API_KEY、SECRET_KEY。进入百度语音官网地址为http://yuyin.baidu.com在右上角单击“控制台”按钮登录百度账号如图所示。 在控制台左端单击“产品服务”-“语音技术”进入语音识别界面如图所示。 进入后可能会提示需要实名认证填入相关信息完成认证即可。 单击“创建应用”根据需求填写项目名称、类型、所需接口、语音包名、应用描述等信息后即可创建成功如图所示。 按下图查看应用详情即可得到APP_ID、API_KEY、SECRET_KEY供后续调用在此界面也可查看调用量限制等信息如下两图所示。 注意如果API接口状态为待开通付费的话需要在左边“概览”页中选择需要开通的API接口进行开通。如下图所示。 本项目使用百度语音识别API接口采用以下两种方法调用最终采用后者。 (1) 下载使用SDK 根据pip工具使用pip install baidu-aip下载。 调用代码为 from aip import AipSpeech APP_ID XXXXXXX API_KEY **************** SECRET_KEY ********************* client AipSpeech(APP_ID, API_KEY, SECRET_KEY) #读取文件 def get_file_content(file_path):with open(file_path, rb) as fp:return fp.read() resultclient.asr(get_file_content(test2.wav),wav,16000,{dev_pid: 1537, }) print(type(result)) print(result)(2)不需要下载SDK 首先根据文档组装.url获取token其次处理本地音频以JSON格式POST到百度语音识别服务器获得返回结果。 #合成请求token的URLurl baidu_server grant_type grant_type client_id client_id client_secret client_secret#获取tokenres urllib.request.urlopen(url).read()data json.loads(res.decode(utf-8))token data[access_token]print(token)下载配置所需要的库相关操作如下 (1)安装moviepy库 moviepy用于视频编辑Python库:切割、拼接、标题插入、视频合成、视频处理。moviepy依赖库有numpy、imageio、decorator、 tqdm。 在cmd使用命令pip install moviepy安装moviepy库。 安装时可能存在的问题:发生报错导致下载安装停止时查看报错信息可能为依赖库的缺失。 如Anaconda中的Python未安装tqdm发生报错使用conda list查看确认缺失该库可通过conda install tqdm下载安装其他库缺失问题也可依照类似方法解决。 (2)安装js2py库 爬虫时很多网站使用js加密技术js2py可以在Python环境下运行Java代码摆脱Java环境的瓶颈。制作中英文字幕时涉及百度语音识别英文输出需将其翻译为中文因此安装is2py库 爬虫调用百度翻译的JavaScript脚本。 (3)安装pydub库 根据音频的静默检测语句停顿进行合理断句识别pydub库使用pip工具安装在cmd命令行输入pip insall pydub。 使用pydub)库 from pydub import AudioSegment 验证安装是否成功可通过例程检测若报错没有pydub库则安装失败。 2. 翻译 将识别的英文结果使用爬虫调用百度翻译得到对应的中文翻译。 class baidu_Translate():def __init__(self):self.js js2py.eval_js(var i null;function n(r, o) {for (var t 0; t o.length - 2; t 3) {var a o.charAt(t 2);a a a ? a.charCodeAt(0) - 87 : Number(a),a o.charAt(t 1) ? r a: r a,r o.charAt(t) ? r a 4294967295 : r ^ a}return r}var hash function e(r,gtk) {var o r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);if (null o) {var t r.length;t 30 (r r.substr(0, 10) r.substr(Math.floor(t / 2) - 5, 10) r.substr( - 10, 10))} else {for (var e r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C 0, h e.length, f []; h C; C) ! e[C] f.push.a pply(f, a(e[C].split())),C ! h - 1 f.push(o[C]);var g f.length;g 30 (r f.slice(0, 10).join()f.slice(Math.floor(g/ 2) - 5, Math.floor(g / 2) 5).join() f.slice( - 10).join())}var u void 0,u null ! i ? i: (i gtk || ) || ;for (var d u.split(.), m Number(d[0]) || 0, s Number(d [1]) || 0, S [], c 0, v 0; v r.length; v) {var A r.charCodeAt(v);128 A ? S[c] A: (2048 A ? S[c] A 6 | 192 : (55296 (64512 A) v 1 r.length 56320 (64512r.charCodeAt(v 1)) ? (A 65536 ((1023 A) 10) (1023 r.charCodeAt(v)), S[c] A 18 | 240, S[c] A 12 63 | 128) : S[c] A 12 | 224,S[c] A 6 63 | 128), S[c] 63 A | 128)}for (var p m,F -a^6, D -3^b-f, b 0;b S.length; b) p S[b],p n(p, F);return p n(p, D),p ^ s,0 p (p (2147483647 p) 2147483648),p % 1e6,p.toString() . (p ^ m)})headers {user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36, }self.session requests.Session()self.session.get(https://fanyi.baidu.com, headersheaders)response self.session.get(https://fanyi.baidu.com, headersheaders)self.token re.findall(token: (.*?),, response.text)[0]self.gtk 320305.131321201 # re.findall(window.gtk (.*?);, response.text, re.S)[0]def translate(self, query, from_langen, to_langzh):#语言检测self.session.post(https://fanyi.baidu.com/langdetect, data{query: query})#单击事件self.session.get(https://click.fanyi.baidu.com/?src1locatezhactio nquerytype1page1)#翻译data {from: from_lang,to: to_lang,query: query,transtype: realtime,simple_means_flag: 3,sign: self.js(query, self.gtk),token: self.token}response self.session.post(https://fanyi.baidu.com/v2transapi, datadata)json response.json()if error in json:pass#return error: {}.format(json[error])else:return response.json()[trans_result][data][0][dst]3. 格式转换 百度语音识别API有严格的参数要求使用moviepy库完成从视频中提取音频工作。 def separate_audio(file_path, save_path): #视频转音频音频编码要求.wav格式、采样率 16000、16bit 位深、单声道audio_file save_path \\tmp.wavaudio AudioFileClip(file_path)audio.write_audiofile(audio_file, ffmpeg_params[-ar, 16000, -ac, 1], loggerNone)return audio_file4. 音频切割 使用pydub库利用停顿时的音频分贝降低作为判定断句标准设置停顿时的分贝阈值拆分后的小音频不短于0.5s不长于5s。 def cut_point(path, dbfs1.25): #音频切割函数sound AudioSegment.from_file(path, formatwav)tstamp_list detect_silence(sound, 600, sound.dBFS * dbfs, 1)timelist []for i in range(len(tstamp_list)):if i 0:back 0else:back tstamp_list[i - 1][1] / 1000timelist.append([back, tstamp_list[i][1] / 1000])min_len 0.5 #切割所得音频不短于0.5s不长于5smax_len 5result []add 0total len(timelist)for x in range(total):if x add total:into, out timelist[x add]if out-intomin_len and out-intomax_len and x add 1 total:add 1out timelist[x add][1]result.append([into, out])elif out - into max_len:result.append([into, out])else:breakreturn result5. 语音识别 调用百度语音识别API进行操作填写申请App所得信息上传待识别音频进行中文或英文识别返回所得文本。 class baidu_SpeechRecognition(): #调用百度语音识别API进行操作def __init__(self, dev_pid):Speech_APP_ID 19712136Speech_API_KEY Loo4KbNtagchc2BLdCnHEnZlSpeech_SECRET_KEY DO4UlSnw7FzpodU2G3yXQSHLv6Q2inN8self.dev_pid dev_pidself.SpeechClient AipSpeech(Speech_APP_ID, Speech_API_KEY, Speech_SECRET_KEY)self.TranslClient baidu_Translate()def load_audio(self, audio_file): #读取加载音频文件self.source AudioSegment.from_wav(audio_file)def speech_recognition(self, offset, duration, fanyi): #语音识别根据要求的参数进行设置data self.source[offset * 1000:duration * 1000].raw_dataresult self.SpeechClient.asr(data, wav, 16000, {dev_pid: self.dev_pid, })fanyi_text if fanyi: try:fanyi_text self.TranslClient.translate(result[result][0]) #调用translate()函数将识别文本翻译或直接输出except:passtry:return [result[result][0], fanyi_text] #返回所得文本except:#print(错误:,result)return [, ]6. 文本切割 断句避免同一画面内出现过多文字影响观感将38设为阈值小于38时正常显示大于则切割分段显示。 def cut_text(text, length38): #文本切割即断句一个画面最多单语言字数不超过38否则将多出的加入下一画面newtext if len(text) length:while True:cutA text[:length]cutB text[length:]newtext cutA \nif len(cutB) 4:newtext cutA cutBbreakelif len(cutB) length:text cutBelse:newtext cutBbreakreturn newtextreturn text7. main函数 让模块(函数)可以自己单独执行构造调用其他函数的入口设置简单的交互功能用户根据需要选择语言类型、字幕类型以及是否将字幕直接加入视频中并可观察当前工作进度、推算所需时间、文件格式错误时报错。 if __name__ __main__:def StartHandle(timeList, save_path, srt_mode2, result_printFalse):index 0total len(timeList)a_font r{\fn微软雅黑\fs14} #中、英字幕字体设置b_font r{\fn微软雅黑\fs10}fanyi False if srt_mode 1 else Truefile_write open(save_path, a, encodingutf-8)for x in range(total):into, out timelist[x]timeStampformat_time(into - 0.2) -- format_time(out- 0.2)resultbaidufanyi.speech_recognition(into0.1,out - 0.1, fanyi)if result_print:if srt_mode 0:print(timeStamp, result[0])else:print(timeStamp, result)else:progressbar(total, x, 识别中... - {0}/{1}.format(%03d % (total), %03d % (x)), 44)#将切割后所得的识别文本结果按顺序写入中、英、中英双语不同if len(result[0]) 1:index 1text str(index) \n timeStamp \nif srt_mode 0: # 仅中文text a_font cut_text(result[1])elif srt_mode 1: # 仅英文text b_font cut_text(result[0])else: #中文英文texta_fontcut_text(result[1])\nb_font result[0]text text.replace(\u200b, ) \n\nfile_write.write(text)file_write.close()if not result_print:progressbar(total,total,识别中...-{0}/{1}.format(%03d% (total), %03d % (total)), 44)os.system(cls)wav_path os.environ.get(TEMP)#语音模型1536为普通话简单英文1537为普通话1737为英语1637为粤语1837川话1936普通话远场pid_list 1536, 1537, 1737, 1637, 1837, 1936#设置参数print([ 百度语音识别字幕生成器 - by Teri ]\n)__line__print__(1 模式选择)input_dev_pid input(请选择识别模式:\n\n (1)普通话,\n (2)普通话简单英语,\n (3)英语,\n (4)粤语,\n (5)四川话,\n (6)普通话-远场\n\n请输入一个选项(默认3):)__line__print__(2 字幕格式)input_srt_mode input(请选择字幕格式:\n\n (1)中文,\n (2)英文,\n (3)中文英文\n\n请输入一个选项(默认3):)__line__print__(3 实时输出)input_print input(是否实时输出结果到屏幕? (默认:否/y:输出):).upper()#处理参数根据用户输入给出相应参数dev_pid int(input_dev_pid) if input_dev_pid else 3dev_pid - 1srt_mode int(input_srt_mode) if input_srt_mode else 3srt_mode - 1re_print True if input_print Y else False#输入文件__line__print__(4 打开文件)input_file input(请拖入一个文件或文件夹并按回车:).strip()video_file []if not os.path.isdir(input_file):video_file [input_file]else:file_list file_filter(input_file)for a, b in file_list:video_file.append(a \\ b)#执行确认select_dev [普通话, 普通话简单英语, 英语, 粤语, 四川话, 普通话-远场]select_mode [中文, 英文, 中文英文]__line__print__(5 确认执行)input(当前的设置:\n识别模式: {0}, 字幕格式: {1}, 输出结果: {2}\n当前待处理文件 {3} 个\n请按下回车开始处理....format(select_dev[dev_pid],select_mode[srt_mode],是 if re_print else 否,len(video_file)))#批量处理调用所设函数进行处理工作total_file len(video_file)total_time time.time()baidufanyi baidu_SpeechRecognition(pid_list[dev_pid])for i in range(total_file): #在所给文件范围内循环运行item_time time.time() #项目时间file_name video_file[i].split(\\)[-1]print(\n ...正在处理音频... , end)audio_file separate_audio(video_file[i], wav_path) #视频转音频timelist cut_point(audio_file, dbfs1.15) #音频切割if timelist:print(\r 当前:{} 预计:{} .format(%03d % (i),countTime(len(timelist) * 5, nowFalse)))srt_name video_file[i][:video_file[i].rfind(.)] .srt #根据时间将输出循环写入字幕文件baidufanyi.load_audio(audio_file) StartHandle(timelist, srt_name, srt_mode, re_print)print(\n{} 处理完成, 本次用时{}.format(file_name, countTime(item_time)))else:print(音频参数错误)#执行完成统计所用时间input(全部完成, 处理了{}个文件, 全部用时{}.format(total_file, countTime(total_time))) #本部分包括活动类、模块的相关函数、主函数代码 from moviepy.editor import AudioFileClip from pydub import AudioSegment from pydub.silence import detect_silence from aip import AipSpeech import os import time import re import requests import js2py class baidu_Translate():def __init__(self):self.js js2py.eval_js(var i null;function n(r, o) {for (var t 0; t o.length - 2; t 3) {var a o.charAt(t 2);a a a ? a.charCodeAt(0) - 87 : Number(a),a o.charAt(t 1) ? r a: r a,r o.charAt(t) ? r a 4294967295 : r ^ a}return r}var hash function e(r,gtk) {var o r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);if (null o) {var t r.length;t 30 (r r.substr(0, 10) r.substr(Math.floor(t / 2) - 5, 10) r.substr( - 10, 10))} else {for (var e r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C 0, h e.length, f []; h C; C) ! e[C] f.push.apply(f, a(e[C].split())),C ! h - 1 f.push(o[C]);var g f.length;g 30 (r f.slice(0, 10).join() f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) 5).join() f.slice( - 10).join())}var u void 0,u null ! i ? i: (i gtk || ) || ;for (var d u.split(.), m Number(d[0]) || 0, s Number(d[1]) || 0, S [], c 0, v 0; v r.length; v) {var A r.charCodeAt(v);128 A ? S[c] A: (2048 A ? S[c] A 6 | 192 : (55296 (64512 A) v 1 r.length 56320 (64512 r.charCodeAt(v 1)) ? (A 65536 ((1023 A) 10) (1023 r.charCodeAt(v)), S[c] A 18 | 240, S[c] A 12 63 | 128) : S[c] A 12 | 224, S[c] A 6 63 | 128), S[c] 63 A | 128)}for (var p m,F -a^6, D -3^b-f, b 0;b S.length; b) p S[b],p n(p, F);return p n(p, D),p ^ s,0 p (p (2147483647 p) 2147483648),p % 1e6,p.toString() . (p ^ m)})headers {user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36, }self.session requests.Session()self.session.get(https://fanyi.baidu.com, headersheaders)response self.session.get(https://fanyi.baidu.com, headersheaders)self.token re.findall(token: (.*?),, response.text)[0]self.gtk 320305.131321201 # re.findall(window.gtk (.*?);, response.text, re.S)[0]def translate(self, query, from_langen, to_langzh):#语言检测self.session.post(https://fanyi.baidu.com/langdetect, data{query: query})#单击事件 self.session.get(https://click.fanyi.baidu.com/?src1locatezhactionquerytype1page1)#翻译data {from: from_lang,to: to_lang,query: query,transtype: realtime,simple_means_flag: 3,sign: self.js(query, self.gtk),token: self.token}response self.session.post(https://fanyi.baidu.com/v2transapi, datadata)json response.json()if error in json:pass#return error: {}.format(json[error])else:return response.json()[trans_result][data][0][dst] class baidu_SpeechRecognition():def __init__(self, dev_pid):#百度语音识别APISpeech_APP_ID 19712136Speech_API_KEY Loo4KbNtagchc2BLdCnHEnZlSpeech_SECRET_KEY DO4UlSnw7FzpodU2G3yXQSHLv6Q2inN8self.dev_pid dev_pidself.SpeechClient AipSpeech(Speech_APP_ID, Speech_API_KEY, Speech_SECRET_KEY)self.TranslClient baidu_Translate()def load_audio(self, audio_file):self.source AudioSegment.from_wav(audio_file)def speech_recognition(self, offset, duration, fanyi):data self.source[offset * 1000:duration * 1000].raw_dataresult self.SpeechClient.asr(data, wav, 16000, {dev_pid: self.dev_pid, })fanyi_text if fanyi:try:fanyi_text self.TranslClient.translate(result[result][0])except:passtry:return [result[result][0], fanyi_text]except:#print(错误:,result)return [, ] def cut_point(path, dbfs1.25):sound AudioSegment.from_file(path, formatwav)tstamp_list detect_silence(sound, 600, sound.dBFS * dbfs, 1)timelist []for i in range(len(tstamp_list)):if i 0:back 0else:back tstamp_list[i - 1][1] / 1000timelist.append([back, tstamp_list[i][1] / 1000])min_len 0.5max_len 5result []add 0total len(timelist)for x in range(total):if x add total:into, out timelist[x add]if out-intomin_len and out - into max_len and x add 1 total:add 1out timelist[x add][1]result.append([into, out])elif out - into max_len:result.append([into, out])else:breakreturn result def cut_text(text, length38):newtext if len(text) length:while True:cutA text[:length]cutB text[length:]newtext cutA \nif len(cutB) 4:newtext cutA cutBbreakelif len(cutB) length:text cutBelse:newtext cutBbreakreturn newtextreturn text def progressbar(total, temp, text, lenght40): #定义进度栏content \r text.strip().replace(, [{0}{1}]{2}%)percentage round(temp / total * 100, 2)a round(temp / total * lenght)b lenght - aprint(content.format(■ * a, □ * b, percentage), end) def format_time(seconds): #定义时间格式sec int(seconds)m, s divmod(sec, 60)h, m divmod(m, 60)fm int(str(round(seconds, 3)).split(.)[-1])return %02d:%02d:%02d,%03d % (h, m, s, fm) def separate_audio(file_path, save_path): #定义音频间隔audio_file save_path \\tmp.wavaudio AudioFileClip(file_path)audio.write_audiofile(audio_file, ffmpeg_params[-ar, 16000, -ac, 1], loggerNone)return audio_file def file_filter(path, alldirFalse): #定义文件过滤key [mp4, mov]if alldir:dic_list os.walk(path)else:dic_list os.listdir(path)find_list []for i in dic_list:if os.path.isdir(i[0]):header i[0]file i[2]for f in file:for k in key:if f.rfind(k) ! -1:find_list.append([header, f])else:for k in key:if i.rfind(k) ! -1:find_list.append([path, i])if find_list:find_list.sort(keylambda txt: re.findall(r\d, txt[1])[0])return find_list def countTime(s_time, nowTrue): #定义累计时间if now: s_time (time.time() - s_time)m, s divmod(int(s_time), 60)return {}分{}秒.format(%02d % (m), %02d % (s)) def __line__print__(txt- * 10): #定义打印print(\n - * 10 txt - * 10 \n) if __name__ __main__: #主函数def StartHandle(timeList, save_path, srt_mode2, result_printFalse):index 0total len(timeList)a_font r{\fn微软雅黑\fs14}b_font r{\fn微软雅黑\fs10}fanyi False if srt_mode 1 else Truefile_write open(save_path, a, encodingutf-8)for x in range(total):into, out timelist[x]timeStamp format_time(into - 0.2) -- format_time(out - 0.2)result baidufanyi.speech_recognition(into 0.1, out - 0.1, fanyi)if result_print:if srt_mode 0:print(timeStamp, result[0])else:print(timeStamp, result)else:progressbar(total, x, 识别中... - {0}/{1}.format(%03d % (total), %03d % (x)), 44)if len(result[0]) 1:index 1text str(index) \n timeStamp \nif srt_mode 0: #仅中文text a_font cut_text(result[1])elif srt_mode 1: #仅英文text b_font cut_text(result[0])else: #中文英文text a_font cut_text(result[1]) \n b_font result[0]text text.replace(\u200b, ) \n\nfile_write.write(text)file_write.close()if not result_print:progressbar(total, total, 识别中... - {0}/{1}.format(%03d % (total), %03d % (total)), 44)os.system(cls)wav_path os.environ.get(TEMP)#语音模型pid_list 1536, 1537, 1737, 1637, 1837, 1936#设置参数print([ 百度语音识别字幕生成器 - by 谷健任家旺 ]\n)__line__print__(1 模式选择)input_dev_pid input(请选择识别模式:\n\n (1)普通话,\n (2)普通话简单英语,\n (3)英语,\n (4)粤语,\n (5)四川话,\n (6)普通话-远场\n\n请输入一个选项(默认3):)__line__print__(2 字幕格式)input_srt_mode input(请选择字幕格式:\n\n (1)中文,\n (2)英文,\n (3)中文英文\n\n请输入一个选项(默认3):)__line__print__(3 实时输出)input_print input(是否实时输出结果到屏幕? (默认:否/y:输出):).upper()#处理参数dev_pid int(input_dev_pid) if input_dev_pid else 3dev_pid - 1srt_mode int(input_srt_mode) if input_srt_mode else 3srt_mode - 1re_print True if input_print Y else False#输入文件__line__print__(4 打开文件)input_file input(请拖入一个文件或文件夹并按回车:).strip()video_file []if not os.path.isdir(input_file):video_file [input_file]else:file_list file_filter(input_file)for a, b in file_list:video_file.append(a \\ b)#执行确认select_dev [普通话, 普通话简单英语, 英语, 粤语, 四川话, 普通话-远场]select_mode [中文, 英文, 中文英文]__line__print__(5 确认执行)input(当前的设置:\n识别模式: {0}, 字幕格式: {1}, 输出结果: {2}\n当前待处理文件 {3} 个\n请按下回车开始处理....format(select_dev[dev_pid],select_mode[srt_mode],是 if re_print else 否,len(video_file)))#批量处理total_file len(video_file)total_time time.time()baidufanyi baidu_SpeechRecognition(pid_list[dev_pid])for i in range(total_file):item_time time.time()file_name video_file[i].split(\\)[-1]print(\n ...正在处理音频... , end)audio_file separate_audio(video_file[i], wav_path)timelist cut_point(audio_file, dbfs1.15)if timelist:print(\r 当前:{} 预计:{} .format(%03d % (i),countTime(len(timelist) * 5, nowFalse)))srt_name video_file[i][:video_file[i].rfind(.)] .srtbaidufanyi.load_audio(audio_file)StartHandle(timelist, srt_name, srt_mode, re_print)print(\n{} 处理完成, 本次用时{}.format(file_name, countTime(item_time)))else:print(音频参数错误)#执行完成input(全部完成, 处理了{}个文件, 全部用时{}.format(total_file, countTime(total_time)))系统测试 运行Python代码根据提示进行交互选择。选择待识别视频语言如图1所示选择需要的字幕语言如图2所示。 图1 待识别视频 图2 字幕语言 选择是否实时输出字幕结果选择文件路径: (需要在英文输入法下使用双引号)确认需求如图所示。 本次运行的设置 识别模式英语(3)字幕格式为中文英文(3)是否实时输出字幕为(y) 。结果实时查看字幕输出如图所示。 生成.srt字幕文件如图所示。 在播放器中选择打开或关闭字幕当生成多个字幕文件(如英文/中文/英文中文)时也可在播放器中设置更换字幕文件。 使用记事本打开字幕文件如图所示。 查看字幕文件加入视频的效果原无字幕视频如图所示。 加入生成字幕后的视频如图所示。 工程源代码下载 详见本人博客资源下载页 其它资料下载 如果大家想继续了解人工智能相关学习路线和知识体系欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线所有资料免关注免套路直接网盘下载》 这篇博客参考了Github知名开源平台AI技术平台以及相关领域专家DatawhaleApacheCNAI有道和黄海广博士等约有近100G相关资料希望能帮助到所有小伙伴们。
http://www.w-s-a.com/news/963377/

相关文章:

  • 做网站学习什么wordpress 文件夹
  • 前端移动网站开发wordpress图文混排
  • 企业网站建站那种好商城类网站怎么优化
  • 手机微网站怎么制作的网上找设计师
  • 网站建设包括哪些方面学校网站 建设
  • 贵阳网站优化公司建筑设计师用什么软件
  • 网站建设的小说静态网页模板免费网站
  • 芜湖建设厅官方网站wordpress自动设置缩略图
  • 推荐网站网页湛江网站建设哪家优惠多
  • 传奇网站免费空间网店装修店面
  • 网站改版 重新收录湖南建筑信息一体化管理平台
  • 可以做直播卖产品的网站陕西省建设银行网站
  • 搭建网站的英语seo优化专员招聘
  • 做网站深紫色搭配什么颜色网站的在线支付怎么做
  • 中国最大网站建设公司长沙专业做网站公司哪家好
  • 金峰辉网站建设菏泽财富中心网站建设
  • 怎么做网站站长视频企业网站开发意义
  • 网站创建多少钱商标自助查询系统官网
  • 免费做App和网站的平台广州做网站推广的公司
  • 衡水做网站推广的公司wordpress相册滑动
  • 不用域名也可以做网站公司网站建设制作难么
  • 学做网站培训机构wordpress 图片拉伸
  • 成都捕鱼网站建设wordpress自定义文章类别
  • wordpress网站怎么加速湖北网站建设企业
  • 迁安做网站中的cms开发南平网站建设公司
  • 肥西县住房和城乡建设局网站代驾系统定制开发
  • 网站建设明细报价表 服务器qq是哪家公司的产品
  • html链接网站模板wordpress怎么调用简码
  • 网站域名怎么查简述网站推广的五要素
  • 咸宁网站设计公司app安装下载