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

Python巧用SnowNLP實現(xiàn)生成srt字幕文件

 更新時間:2024年01月23日 09:06:25   作者:IT里的交易員  
SnowNLP是一個可以方便的處理中文文本內(nèi)容的python類庫,本文主要為大家詳細介紹了Python如何巧用SnowNLP實現(xiàn)將一段話一鍵生成srt字幕文件,感興趣的可以了解下

前言

最近在嘗試moviepy制作視頻,但是有時候需要制作字幕。一般視頻剪輯軟件都是手工添加字幕,這個很費時費力。

雖然某音等可以自動識別語音添加字幕,但寶寶要使用moviepy制作視頻,都已經(jīng)有文字了,還需要再語音識別么?這就有點脫褲子放屁了。

那有沒有一種簡便的方法呢?比如我給一段話就可以自動生成字幕。如何可以一鍵生成字幕文件?

但皇天不負苦心人,還真讓我搞出來了。

要做字幕,首先就得處理文章斷句。這個搞不定,后面都弄不成。但現(xiàn)在大部分的自然語言處理庫基本都是針對英文的,那需要處理中文,怎么辦呢?這里給大家推薦一個方便處理中文的類庫SnowNLP。通過這個庫進行斷句,再加上合適的方法,就可以生成srt字幕文件了。

一、SnowNLP是什么

SnowNLP是一個可以方便的處理中文文本內(nèi)容的python類庫,據(jù)作者介紹,是受到了TextBlob的啟發(fā)而寫的,和TextBlob不同的是,這里沒有用NLTK,所有的算法都是自己實現(xiàn)的,并且自帶了一些訓(xùn)練好的字典。

SnowNLP主要功能包括分詞、詞性標注、情感分析、漢字轉(zhuǎn)拼音、繁體轉(zhuǎn)簡體、關(guān)鍵詞提取以及文本摘要等等。

二、SnowNLP使用方法

1. 安裝

pip install snownlp -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 官方示例

官方已經(jīng)舉例了一些使用方法,這里羅列以下,引文本文重點不在這里。

from snownlp import SnowNLP

s = SnowNLP(u'這個東西真心很贊')

s.words         # [u'這個', u'東西', u'真心',
                #  u'很', u'贊']

s.tags          # [(u'這個', u'r'), (u'東西', u'n'),
                #  (u'真心', u'd'), (u'很', u'd'),
                #  (u'贊', u'Vg')]

s.sentiments    # 0.9769663402895832 positive的概率

s.pinyin        # [u'zhe', u'ge', u'dong', u'xi',
                #  u'zhen', u'xin', u'hen', u'zan']

s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')

s.han           # u'「繁體字」「繁體中文」的叫法
                # 在臺灣亦很常見。'

text = u'''
自然語言處理是計算機科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個重要方向。
它研究能實現(xiàn)人與計算機之間用自然語言進行有效通信的各種理論和方法。
自然語言處理是一門融語言學(xué)、計算機科學(xué)、數(shù)學(xué)于一體的科學(xué)。
因此,這一領(lǐng)域的研究將涉及自然語言,即人們?nèi)粘J褂玫恼Z言,
所以它與語言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。
自然語言處理并不是一般地研究自然語言,
而在于研制能有效地實現(xiàn)自然語言通信的計算機系統(tǒng),
特別是其中的軟件系統(tǒng)。因而它是計算機科學(xué)的一部分。
'''

s = SnowNLP(text)

s.keywords(3)	# [u'語言', u'自然', u'計算機']

s.summary(3)	# [u'因而它是計算機科學(xué)的一部分',
                #  u'自然語言處理是一門融語言學(xué)、計算機科學(xué)、
				#	 數(shù)學(xué)于一體的科學(xué)',
				#  u'自然語言處理是計算機科學(xué)領(lǐng)域與人工智能
				#	 領(lǐng)域中的一個重要方向']
s.sentences

s = SnowNLP([[u'這篇', u'文章'],
             [u'那篇', u'論文'],
             [u'這個']])
s.tf
s.idf
s.sim([u'文章'])# [0.3756070762985226, 0, 0]

這些都不是重點,重點是s.sentences這個用法。

三、借用SnowNLP制作srt字幕文件

在給視頻添加字幕,我們需要srt字幕文件(有點像MP3的lrc歌詞文件)。格式就是序號、時間、內(nèi)容。格式雖然很簡單,但是要讓程序字段斷句可不好弄。而且文章一般還有標點符號,字幕一般還不能太長,太長了一屏顯示不下也不好。

如何可以自動斷句,去掉標點符號,還得控制字幕在15個字符,還得根據(jù)15個字幕的速度控制好顯示的時間。哦,想想都頭大。

不過,經(jīng)過多個日夜的反復(fù)調(diào)試,目前終于可以實現(xiàn)如上功能,給定一段文字,用程序自動生成字幕文件。且各種節(jié)奏都已處理好。

代碼如下

def gen_srt(text,srt_path):
    import re
    from snownlp import SnowNLP
    # popboy:將文本分成多個句子
    sentences = []
    t = SnowNLP(text)
    for sen in t.sentences:
        # print(sen + "\n")
        sentences.append(sen)

    # 逐句進行再判斷,如果大于15個字符則再進行分割。
    captions = []
    delimiter_set = {'。', '#', '?', '?', '$', ':', ':'} 
    for sen in sentences:
        if len(sen)>15:
            sub_sen = re.split(r'[{char_set}]'.format(char_set=delimiter_set), sen)
            for i in sub_sen:
                captions.append(i)
        else:
            captions.append(sen)

    # 計算每個句子的持續(xù)時間
    end_time = 0
    srt = ''
    for i, sentence in enumerate(captions):
        start_time = end_time + 0
        start_time_str = "{:02d}:{:02d}:{:02d},{}".format(int(start_time // 3600), int((start_time % 3600) // 60), int(start_time % 60), "000")
        duration = len(sentence) * 0.225
        end_time = start_time + duration
        end_time_str = "{:02d}:{:02d}:{:02d},{}".format(int(end_time // 3600), int((end_time % 3600) // 60), int(end_time % 60), "000")
        srt += "{}\n{} --> {}\n{}\n\n".format(i+1, start_time_str, end_time_str, sentence)

    # 保存srt文件
    with open(srt_path, 'w', encoding='utf-8') as f:
        f.write(srt)
    print(f'字幕srt文件已保存到{srt_path}')

if __name__ == "__main__": 
    text = '''
    在上面的代碼中,我們首先指定要打開的文本文件的路徑。然后,我們創(chuàng)建了一個簡單的窗口布局,其中包含一個文本框元素用于顯示文件內(nèi)容。接下來,我們打開文本文件并讀取其內(nèi)容。
    '''
    srt_path = r'c:\captions.srt'
    gen_srt(text,srt_path)

經(jīng)過調(diào)試,最終生成的字幕文件如下:

1
00:00:00,000 --> 00:00:01,000
在上面的代碼中

2
00:00:01,000 --> 00:00:05,000
我們首先指定要打開的文本文件的路徑

3
00:00:05,000 --> 00:00:05,000
然后

4
00:00:05,000 --> 00:00:09,000
我們創(chuàng)建了一個簡單的窗口布局

5
00:00:09,000 --> 00:00:13,000
其中包含一個文本框元素用于顯示文件內(nèi)容

6
00:00:13,000 --> 00:00:13,000
接下來

7
00:00:13,000 --> 00:00:17,000
我們打開文本文件并讀取其內(nèi)容

如上的srt就成為moviepy可以使用的字幕文件了。

總結(jié)

今天就先寫到這里,這個主要是介紹如何生成字幕文件,后續(xù)再考慮如何添加字幕文件給視頻。

另外,moviepy在讀取srt文件時經(jīng)常報錯,博主已經(jīng)替大家掃除了障礙,詳見:

關(guān)聯(lián)閱讀

moviepy讀取字幕srt文件報錯‘gbk‘ codec can‘t decode的解決辦法(修改subtitles.py中SubtitlesClip類完美解決)

博主自己調(diào)測,費了好大勁才完成的代碼,貢獻出來,如果幫到大家不妨點個贊再復(fù)制使用!

附錄

(base) C:\Users\Administrator>pip install snownlp -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting snownlp
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/3d/b3/37567686662100d3bce62d3b0f2adec18ab4b9ff2b61abd7a61c39343c1d/snownlp-0.12.3.tar.gz (37.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.6/37.6 MB 22.6 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: snownlp
  Building wheel for snownlp (setup.py) ... done
  Created wheel for snownlp: filename=snownlp-0.12.3-py3-none-any.whl size=37760953 sha256=7d043a27ee980f427133a879dd55ceb3647cb54b8713d358b865b31f7cb25253
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\86\7d\1d\8f369105b5ef43f33d885ba1fd289d47c57014b391a6708131
Successfully built snownlp
Installing collected packages: snownlp
Successfully installed snownlp-0.12.3

(base) C:\Users\Administrator>

到此這篇關(guān)于Python巧用SnowNLP實現(xiàn)生成srt字幕文件的文章就介紹到這了,更多相關(guān)Python SnowNLP生成srt字幕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉(zhuǎn)換的方法

    python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉(zhuǎn)換的方法

    這篇文章主要介紹了python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉(zhuǎn)換的方法,涉及Python操作字符串的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 合并百度影音的離線數(shù)據(jù)( with python 2.3)

    合并百度影音的離線數(shù)據(jù)( with python 2.3)

    這篇文章主要介紹了合并百度影音的離線數(shù)據(jù)( with python 2.3)的相關(guān)資料
    2015-08-08
  • Python文件路徑模式匹配glob模塊使用詳解

    Python文件路徑模式匹配glob模塊使用詳解

    這篇文章主要介紹了Python文件路徑模式匹配glob模塊使用的相關(guān)資料,glob模塊是Python中用于文件和目錄查找的工具,支持使用通配符進行模糊匹配,它可以處理簡單的文件名模式,并通過glob和iglob兩個函數(shù)實現(xiàn)文件路徑的模式匹配,需要的朋友可以參考下
    2025-04-04
  • Python/ArcPy遍歷指定目錄中的MDB文件方法

    Python/ArcPy遍歷指定目錄中的MDB文件方法

    今天小編就為大家分享一篇Python/ArcPy遍歷指定目錄中的MDB文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python 開發(fā)工具通過 agent 代理使用的方法

    Python 開發(fā)工具通過 agent 代理使用的方法

    這篇文章主要介紹了Python 開發(fā)工具通過 agent 代理使用的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python實現(xiàn)DDos攻擊實例詳解

    Python實現(xiàn)DDos攻擊實例詳解

    這篇文章主要給大家介紹了關(guān)于Python實現(xiàn)DDos攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • PyQt5 設(shè)置窗口全屏顯示方式

    PyQt5 設(shè)置窗口全屏顯示方式

    這篇文章主要介紹了PyQt5 設(shè)置窗口全屏顯示方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python實現(xiàn)讀取圖像文件并獲取到像素數(shù)組的4種方法詳解

    python實現(xiàn)讀取圖像文件并獲取到像素數(shù)組的4種方法詳解

    這篇文章主要為大家詳細介紹了python實現(xiàn)讀取圖像文件并獲取到像素數(shù)組的4種方法并進行對比,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2026-03-03
  • Python?包管理器pip入門教程

    Python?包管理器pip入門教程

    這篇文章主要為大家介紹了Python?pip包管理器入門教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 執(zhí)行Python程序時模塊報錯問題

    執(zhí)行Python程序時模塊報錯問題

    這篇文章主要介紹了執(zhí)行Python程序時模塊報錯問題及解決方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論

桂东县| 怀宁县| 山丹县| 泰和县| 桓台县| 教育| 深水埗区| 闻喜县| 含山县| 南开区| 桂阳县| 肥西县| 泰宁县| 福泉市| 华宁县| 淮滨县| 海宁市| 天镇县| 临桂县| 双柏县| 德钦县| 会宁县| 石河子市| 城市| 灵璧县| 朝阳县| 罗山县| 淮滨县| 长宁区| 和政县| 姚安县| 湘潭市| 琼海市| 日喀则市| 洪江市| 和林格尔县| 梅州市| 都匀市| 盱眙县| 瑞昌市| 贵德县|