最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

從視頻中提取音頻

安裝 moviepy

pip install moviepy

相關(guān)代碼:

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)建一個應(yī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服務(wù)集群,識別響應(yīng)速度較標準版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}
 #測試自訓(xùn)練平臺需要打開以下信息
 #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

生成字幕其實就是語音識別的應(yīng)用,將識別后的內(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)易見外平臺還好用。

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

相關(guān)文章

  • Python真題案例之小學算術(shù)?階乘精確值?孿生素數(shù)?6174問題詳解

    Python真題案例之小學算術(shù)?階乘精確值?孿生素數(shù)?6174問題詳解

    這篇文章主要介紹了python實操案例練習,本文給大家分享的案例中主要任務(wù)有小學生算術(shù)、階乘的精確值、孿生素數(shù)、6174問題,需要的小伙伴可以參考一下
    2022-03-03
  • Python 代碼在函數(shù)中運行得更快的原因解析

    Python 代碼在函數(shù)中運行得更快的原因解析

    我們知道,python 是一種解釋型語言,它會逐行讀取并執(zhí)行代碼,小伙伴們可能會有這個疑問:為什么在函數(shù)中運行的 Python 代碼速度更快,今天這篇文章將會解答大家心中的疑惑
    2023-09-09
  • Python機器學習NLP自然語言處理基本操作詞袋模型

    Python機器學習NLP自然語言處理基本操作詞袋模型

    本文是Python機器學習NLP自然語言處理系列文章,帶大家開啟一段學習自然語言處理 (NLP) 的旅程。本篇文章主要學習NLP自然語言處理基本操作之詞袋模型
    2021-09-09
  • Python中super的用法實例

    Python中super的用法實例

    這篇文章主要介紹了Python中super的用法實例,本文對比了普通繼承和super繼承的相關(guān)內(nèi)容,從運行結(jié)果上看,普通繼承和super繼承是一樣的,但是其實它們的內(nèi)部運行機制不一樣,這一點在多重繼承時體現(xiàn)得很明顯,需要的朋友可以參考下
    2015-05-05
  • 最新PyCharm從安裝到PyCharm永久激活再到PyCharm官方中文漢化詳細教程

    最新PyCharm從安裝到PyCharm永久激活再到PyCharm官方中文漢化詳細教程

    這篇文章涵蓋了最新版PyCharm安裝教程,最新版PyCharm永久激活碼教程,PyCharm官方中文(漢化)版安裝教程圖文并茂非常詳細,需要的朋友可以參考下
    2020-11-11
  • Python讀取CSV文件的4種方法與注意事項

    Python讀取CSV文件的4種方法與注意事項

    在python里面,讀取或?qū)懭隿sv文件時是經(jīng)常遇到的一個需求,這篇文章主要給大家介紹了關(guān)于Python讀取CSV文件的4種方法與注意事項,需要的朋友可以參考下
    2023-10-10
  • Python中的http.server庫用法詳細介紹

    Python中的http.server庫用法詳細介紹

    這篇文章主要給大家介紹了關(guān)于Python中http.server庫用法的相關(guān)資料,http.server是Python標準庫中的一個模塊,用于創(chuàng)建基本的HTTP服務(wù)器,它提供了處理HTTP請求的基本框架和核心類,需要的朋友可以參考下
    2024-11-11
  • Python pandas常用函數(shù)詳解

    Python pandas常用函數(shù)詳解

    這篇文章主要介紹了Python pandas常用函數(shù)詳解,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python計算機視覺實現(xiàn)全景圖像拼接示例

    python計算機視覺實現(xiàn)全景圖像拼接示例

    這篇文章主要為大家介紹了python計算機視覺實現(xiàn)全景圖像拼接示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Django單元測試的具體使用

    Django單元測試的具體使用

    Django提供了一套強大的測試工具來幫助開發(fā)者編寫和運行單元測試,本文就來介紹一下Django中的單元測試,包括測試原理、編寫測試用例和運行測試,感興趣的可以了解一下
    2023-11-11

最新評論

洛南县| 兴国县| 祁阳县| 苏尼特左旗| 合水县| 望都县| 阿克陶县| 堆龙德庆县| 介休市| 灵台县| 临澧县| 文安县| 三原县| 龙胜| 上饶县| 读书| 兰溪市| 佳木斯市| 游戏| 汉中市| 察雅县| 仁化县| 伊金霍洛旗| 蚌埠市| 祁连县| 秦安县| 文登市| 乌拉特中旗| 齐河县| 城市| 儋州市| 肇源县| 会同县| 永清县| 谷城县| 凤庆县| 方城县| 涞水县| 巫溪县| 尚志市| 洛川县|