电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

使用Python和百度語音識別生成視頻字幕的實現

瀏覽:7日期:2022-07-30 15:57:56

從視頻中提取音頻

安裝 moviepy

pip install moviepy

相關代碼:

audio_file = work_path + ’out.wav’video = VideoFileClip(video_file)video.audio.write_audiofile(audio_file,ffmpeg_params=[’-ar’,’16000’,’-ac’,’1’])

根據靜音對音頻分段

使用音頻庫 pydub,安裝:

pip install pydub

第一種方法:

# 這里silence_thresh是認定小于-70dBFS以下的為silence,發現小于 sound.dBFS * 1.3 部分超過 700毫秒,就進行拆分。這樣子分割成一段一段的。sounds = split_on_silence(sound, min_silence_len = 500, silence_thresh= sound.dBFS * 1.3)sec = 0for i in range(len(sounds)): s = len(sounds[i]) sec += sprint(’split duration is ’, sec)print(’dBFS: {0}, max_dBFS: {1}, duration: {2}, split: {3}’.format(round(sound.dBFS,2),round(sound.max_dBFS,2),sound.duration_seconds,len(sounds)))

使用Python和百度語音識別生成視頻字幕的實現

感覺分割的時間不對,不好定位,我們換一種方法:

# 通過搜索靜音的方法將音頻分段# 參考:https://wqian.net/blog/2018/1128-python-pydub-split-mp3-index.htmltimestamp_list = detect_nonsilent(sound,500,sound.dBFS*1.3,1) for i in range(len(timestamp_list)): d = timestamp_list[i][1] - timestamp_list[i][0] print('Section is :', timestamp_list[i], 'duration is:', d)print(’dBFS: {0}, max_dBFS: {1}, duration: {2}, split: {3}’.format(round(sound.dBFS,2),round(sound.max_dBFS,2),sound.duration_seconds,len(timestamp_list)))

輸出結果如下:

使用Python和百度語音識別生成視頻字幕的實現

感覺這樣好處理一些

使用百度語音識別

現在百度智能云平臺創建一個應用,獲取 API Key 和 Secret Key:

使用Python和百度語音識別生成視頻字幕的實現

獲取 Access Token

使用百度 AI 產品需要授權,一定量是免費的,生成字幕夠用了。

’’’百度智能云獲取 Access Token’’’def fetch_token(): params = {’grant_type’: ’client_credentials’, ’client_id’: API_KEY, ’client_secret’: SECRET_KEY} post_data = urlencode(params) if (IS_PY3): post_data = post_data.encode( ’utf-8’) req = Request(TOKEN_URL, post_data) try: f = urlopen(req) result_str = f.read() except URLError as err: print(’token http response http code : ’ + str(err.errno)) result_str = err.reason if (IS_PY3): result_str = result_str.decode() print(result_str) result = json.loads(result_str) print(result) if (’access_token’ in result.keys() and ’scope’ in result.keys()): print(SCOPE) if SCOPE and (not SCOPE in result[’scope’].split(’ ’)): # SCOPE = False 忽略檢查 raise DemoError(’scope is not correct’) print(’SUCCESS WITH TOKEN: %s EXPIRES IN SECONDS: %s’ % (result[’access_token’], result[’expires_in’])) return result[’access_token’] else: raise DemoError(’MAYBE API_KEY or SECRET_KEY not correct: access_token or scope not found in token response’)

使用 Raw 數據進行合成

這里使用百度語音極速版來合成文字,因為官方介紹專有GPU服務集群,識別響應速度較標準版API提升2倍及識別準確率提升15%。適用于近場短語音交互,如手機語音搜索、聊天輸入等場景。 支持上傳完整的錄音文件,錄音文件時長不超過60秒。實時返回識別結果

def asr_raw(speech_data, token): length = len(speech_data) if length == 0: # raise DemoError(’file %s length read 0 bytes’ % AUDIO_FILE) raise DemoError(’file length read 0 bytes’) params = {’cuid’: CUID, ’token’: token, ’dev_pid’: DEV_PID} #測試自訓練平臺需要打開以下信息 #params = {’cuid’: CUID, ’token’: token, ’dev_pid’: DEV_PID, ’lm_id’ : LM_ID} params_query = urlencode(params) headers = { ’Content-Type’: ’audio/’ + FORMAT + ’; rate=’ + str(RATE), ’Content-Length’: length } url = ASR_URL + '?' + params_query # print post_data req = Request(ASR_URL + '?' + params_query, speech_data, headers) try: begin = timer() f = urlopen(req) result_str = f.read() # print('Request time cost %f' % (timer() - begin)) except URLError as err: # print(’asr http response http code : ’ + str(err.errno)) result_str = err.reason if (IS_PY3): result_str = str(result_str, ’utf-8’) return result_str

生成字幕

字幕格式: https://www.cnblogs.com/tocy/p/subtitle-format-srt.html

生成字幕其實就是語音識別的應用,將識別后的內容按照 srt 字幕格式組裝起來就 OK 了。具體字幕格式的內容可以參考上面的文章,代碼如下:

idx = 0for i in range(len(timestamp_list)): d = timestamp_list[i][1] - timestamp_list[i][0] data = sound[timestamp_list[i][0]:timestamp_list[i][1]].raw_data str_rst = asr_raw(data, token) result = json.loads(str_rst) # print('rst is ', result) # print('rst is ', rst[’err_no’][0]) if result[’err_no’] == 0: text.append(’{0}n{1} --> {2}n’.format(idx, format_time(timestamp_list[i][0]/ 1000), format_time(timestamp_list[i][1]/ 1000))) text.append( result[’result’][0]) text.append(’n’) idx = idx + 1 print(format_time(timestamp_list[i][0]/ 1000), 'txt is ', result[’result’][0])with open(srt_file,'r+') as f: f.writelines(text)

總結

我在視頻網站下載了一個視頻來作測試,極速模式從速度和識別率來說都是最好的,感覺比網易見外平臺還好用。

到此這篇關于使用Python和百度語音識別生成視頻字幕的文章就介紹到這了,更多相關Python 百度語音識別生成視頻字幕內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 百度 Python
相關文章:
主站蜘蛛池模板: 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 云杂志网-学术期刊-首页 | CE认证_产品欧盟ROHS-REACH检测机构-商通检测 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 东莞猎头公司_深圳猎头公司_广州猎头公司-广东万诚猎头提供企业中高端人才招聘服务 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 韦伯电梯有限公司 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 制冷采购电子商务平台——制冷大市场 | 立式_复合式_壁挂式智能化电伴热洗眼器-上海达傲洗眼器生产厂家 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 |