亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Python和百度語音識別生成視頻字幕的實現(xiàn)

 更新時間:2020年04月09日 10:50:17   作者:孫亖  
這篇文章主要介紹了使用Python和百度語音識別生成視頻字幕,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

從視頻中提取音頻

安裝 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'])

根據(jù)靜音對音頻分段

使用音頻庫 pydub,安裝:

pip install pydub

第一種方法:

# 這里silence_thresh是認定小于-70dBFS以下的為silence,發(fā)現(xiàn)小于 sound.dBFS * 1.3 部分超過 700毫秒,就進行拆分。這樣子分割成一段一段的。
sounds = split_on_silence(sound, min_silence_len = 500, silence_thresh= sound.dBFS * 1.3)


sec = 0
for i in range(len(sounds)):
 s = len(sounds[i])
 sec += s
print('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)))

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

# 通過搜索靜音的方法將音頻分段
# 參考:https://wqian.net/blog/2018/1128-python-pydub-split-mp3-index.html
timestamp_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)))

輸出結(jié)果如下:

感覺這樣好處理一些

使用百度語音識別

現(xiàn)在百度智能云平臺創(chuàng)建一個應用,獲取 API Key 和 Secret Key:

獲取 Access Token

使用百度 AI 產(chǎn)品需要授權(quán),一定量是免費的,生成字幕夠用了。

'''
百度智能云獲取 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 數(shù)據(jù)進行合成

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

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

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

idx = 0
for 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)

總結(jié)

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

到此這篇關于使用Python和百度語音識別生成視頻字幕的文章就介紹到這了,更多相關Python 百度語音識別生成視頻字幕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python數(shù)據(jù)分析之時間序列分析詳情

    python數(shù)據(jù)分析之時間序列分析詳情

    這篇文章主要介紹了python數(shù)據(jù)分析之時間序列分析詳情,時間序列分析是基于隨機過程理論和數(shù)理統(tǒng)計學方法,具體詳細內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-08-08
  • 利用Python如何批量更新服務器文件

    利用Python如何批量更新服務器文件

    這篇文章主要給大家介紹了關于利用Python如何批量更新服務器文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • python自然語言編碼轉(zhuǎn)換模塊codecs介紹

    python自然語言編碼轉(zhuǎn)換模塊codecs介紹

    這篇文章主要介紹了python自然語言編碼轉(zhuǎn)換模塊codecs介紹,codecs專門用作編碼轉(zhuǎn)換,通過它的接口是可以擴展到其他關于代碼方面的轉(zhuǎn)換,需要的朋友可以參考下
    2015-04-04
  • python創(chuàng)建文本文件的簡單方法

    python創(chuàng)建文本文件的簡單方法

    在本篇內(nèi)容里小編給大家整理分享的是一篇關于python創(chuàng)建文本文件的簡單方法,有需要的朋友們可以參考學習下。
    2020-08-08
  • Python實現(xiàn)雙X軸雙Y軸繪圖的示例詳解

    Python實現(xiàn)雙X軸雙Y軸繪圖的示例詳解

    這篇文章主要介紹了如何利用fig.add_subplot和axes.twinx().twiny()方法實現(xiàn)雙X軸雙Y軸繪圖,文中的示例代碼講解詳細,快跟隨小編一起動手嘗試一下吧
    2022-04-04
  • Python常見報錯解決之SciPy和NumPy版本沖突

    Python常見報錯解決之SciPy和NumPy版本沖突

    Scipy是基于Numpy的科學計算工具庫,方便、易于使用、專為科學和工程設計,是一個用于數(shù)學、科學、工程領域的常用軟件包,這篇文章主要給大家介紹了關于Python常見報錯解決之SciPy和NumPy版本沖突的相關資料,需要的朋友可以參考下
    2024-03-03
  • Python基于回溯法子集樹模板解決最佳作業(yè)調(diào)度問題示例

    Python基于回溯法子集樹模板解決最佳作業(yè)調(diào)度問題示例

    這篇文章主要介紹了Python基于回溯法子集樹模板解決最佳作業(yè)調(diào)度問題,簡單說明了作業(yè)調(diào)度問題并結(jié)合實例形式給出了Python使用回溯法子集樹模板實現(xiàn)最佳作業(yè)調(diào)度問題的具體步驟與相關操作技巧,需要的朋友可以參考下
    2017-09-09
  • Django之第三方平臺QQ授權(quán)登錄的實現(xiàn)

    Django之第三方平臺QQ授權(quán)登錄的實現(xiàn)

    本文主要介紹了Django之第三方平臺QQ授權(quán)登錄的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Python Asyncio調(diào)度原理詳情

    Python Asyncio調(diào)度原理詳情

    這篇文章主要介紹了Python Asyncio調(diào)度原理詳情,Python.Asyncio是一個大而全的庫,它包括很多功能,而跟核心調(diào)度相關的邏輯除了三種可等待對象外,還有其它一些功能,它們分別位于runners.py,base_event.py,event.py三個文件中
    2022-06-06
  • Python使用configparser庫讀取配置文件

    Python使用configparser庫讀取配置文件

    這篇文章主要介紹了Python使用configparser庫讀取配置文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論