【Python 軍火庫🧨 - PySubs2】 字幕檔提取工具的好幫手(ass、ssa、srt、vtt…)

更新於 發佈於 閱讀時間約 5 分鐘
圖片來源

圖片來源

關於字幕檔我們常常會看到「.srt」、「.ass」、「.vtt」…等影片的字幕格式, 但你知道嗎? 這些字幕檔是很重要的一個寶貴資訊, 可以從中對段落的長度、文字進行提取, 此時就需要一個強大的工具來幫我們解析一下字幕檔, 就讓我們來看看怎麼用吧!

安裝

pip install pysubs2

基礎用法

他的用法除了可以直接用終端命令之外, 也可以在Python開發時進行引入並操作相關的API進行更細緻的處理。

終端命令的用法:

# 轉換.ass檔至.srt檔
pysubs2 --to srt *.ass

引入Python的用法

import pysubs2

# 載入字幕
subs = pysubs2.load("my_subtitles.ass", encoding="utf-8")

# 處理字幕
subs.shift(s=2.5)

for line in subs:
# 對每一行的文字內容進行加工
line.text = "{\\\\be1}" + line.text

# 將處理結果儲存成新的檔案
subs.save("my_subtitles_edited.ass")

鳥瞰一下字幕與段落結構

為什麼只介紹這兩個部份呢? 因為基本上我們較常從這兩個類別進行異動, 無非就是更改整個字幕檔的樣式或者是對每一句進行裁切之類的加工程序。

這一個步驟可以幫我們了解一下套件的設計, 透過結構上的了解, 清楚的拆解字幕與片段的部份, 我們只要對於這兩個結構, 就能夠很容易的處理各種字幕內容。

結構上我們大致上拆成兩塊來看, 一塊是整個字幕結構, 另一塊是每個段落結構。

圖片來源

圖片來源


SSAFile

class SSAFile {
- events: List[SSAEvent] = [] #: :class:`SSAEvent` 實例的列表,即單獨的字幕。
- styles: Dict[str, SSAStyle] = {"Default": SSAStyle.DEFAULT_STYLE.copy()} #: :class:`SSAStyle` 實例的字典。
- info: Dict[str, str] = self.DEFAULT_INFO.copy() #: 包含腳本元數據的字典,即 ``[Script Info]``
- aegisub_project: Dict[str, str] = {} #: 包含 Aegisub 專案的字典,即 ``[Aegisub Project Garbage]``
- fonts_opaque: Dict[str, Any] = {} #: 包含嵌入字體的字典,即 ``[Fonts]``
- graphics_opaque: Dict[str, Any] = {} #: 包含嵌入圖像的字典,即 ``[Graphics]``
- fps: Optional[float] = None #: 讀取文件時使用的幀率(如適用)。
- format: Optional[str] = None #: 原始字幕文件的格式(如適用),例如 ``"srt"``
}

SSAEvent

class SSAEvent {
- start: int = 0 #: 字幕的開始時間(毫秒)
- end: int = 10000 #: 字幕的結束時間(毫秒)
- text: str = "" #: 字幕的文本(包含 SubStation 格式標記)
- marked: bool = False #: (僅限 SSA 格式)
- layer: int = 0 #: 層級編號,0 為最低層級(僅限 ASS 格式)
- style: str = "Default" #: 樣式名稱
- name: str = "" #: 演員名稱
- marginl: int = 0 #: 左邊距
- marginr: int = 0 #: 右邊距
- marginv: int = 0 #: 垂直邊距
- effect: str = "" #: 行效果
- type: str = "Dialogue" #: 行類型(對話/註釋)
}

實際使用並說明如下:

# SSAFile
subs = pysubs2.load("my_subtitles.ass", encoding="utf-8")

# event: SSAEvent
for event in subs:
# 每個段落的內容
print(event.start)
print(event.end)
print(event.text)
print(event...)

我們可以用來做什麼?

圖片來源

圖片來源


結語

這次就針對Python的字幕處理套件做一個簡單的介紹,其實要如何使用工具是其次,重點是我們可以用它來做什麼? 這提供了幾個方向給你啟發,如果你有任何不一樣的想法,歡迎下方留言互相交流與討論。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識!

avatar-img
118會員
266內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
這次要來介紹「pytube」這套神器, 當我們需要對影音進行統計分析時就需要使用這把利器來破關, 尤其是AI時代的來臨, 我們會需要大量的資料來進行模型的訓練, 而我們總不可能海量的去撈取這些資料, 會非常沒有效率也浪費空間, 因此我們會先進行偵查的任務, 需要派出偵察隊來蒐集youtube的影音資
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
一早看著IThome的新聞發現到這個標題「📢 PyPI新帳號現需要啟用雙因素驗證才能執行管理操作」, 而近期幾乎都在接觸Python語言, 在Python的生態圈裡相信對於「pip install…」應該相當熟悉了吧! 但對於背後的平台相信我們不曾仔細去了解一番, 這好藉著這次的觀點也順便來介紹一
學習資料科學的過程中相信最熱門的目前應該是Python程式語言了,而Python的世界裡再進行資料科學時最常用的有「Pandas」、「SciPy」、「Scikit-learn」...等,而這些的基礎幾乎都與「NumPy」離不開關係,因為「NumPy」就是地基,這些較為高階的套件則是基於地基發展而起。
過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
這次要來介紹「pytube」這套神器, 當我們需要對影音進行統計分析時就需要使用這把利器來破關, 尤其是AI時代的來臨, 我們會需要大量的資料來進行模型的訓練, 而我們總不可能海量的去撈取這些資料, 會非常沒有效率也浪費空間, 因此我們會先進行偵查的任務, 需要派出偵察隊來蒐集youtube的影音資
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
一早看著IThome的新聞發現到這個標題「📢 PyPI新帳號現需要啟用雙因素驗證才能執行管理操作」, 而近期幾乎都在接觸Python語言, 在Python的生態圈裡相信對於「pip install…」應該相當熟悉了吧! 但對於背後的平台相信我們不曾仔細去了解一番, 這好藉著這次的觀點也順便來介紹一
學習資料科學的過程中相信最熱門的目前應該是Python程式語言了,而Python的世界裡再進行資料科學時最常用的有「Pandas」、「SciPy」、「Scikit-learn」...等,而這些的基礎幾乎都與「NumPy」離不開關係,因為「NumPy」就是地基,這些較為高階的套件則是基於地基發展而起。
過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
Thumbnail
Stable Diffusion 的 Mov2Mov 套件是一個非常強大的工具,讓你可以自動化和簡化視頻轉換過程。這個套件特別適合那些希望在視頻中進行面部替換、添加配件或改變角色外觀的人。這裡是關於這個套件的一些詳細介紹: 功能和優點 自動化視頻轉換: Mov2Mov 可以自動化視頻到
Thumbnail
上篇我們簡單的了解了 TTS 想要達到的目標,但是對於訓練資料的處理、網路架構、損失函數、輸出分析等考慮到篇幅尚未解釋清楚,這篇將針對訓練資料處理中的文字部分進行詳細說明,讓我們開始吧。
Thumbnail
本篇內容介紹如何使用 Python中的 moviepy library 簡單的剪影片。 先安裝moviepy library , 用pip install moviepy , 可參考官方文件。 要剪的影片和python檔要在同個資料夾中,若不在同個位置要用 os library 更換路徑
Thumbnail
會不會有時候只是想要簡單的快速影片去背,剛好電腦沒有安裝適合的影片剪接軟體呢?pinokio這網站提共大量的AI小工具,只要安裝他在桌面,立即可獲最新的AI工具,並且他隨時更新最新版本,省下大量爬文搜尋時間,正適合不會程式的使用者一鍵無腦享受AI帶來的便利與快速。 這次介紹裡面一個好用的小工具"R
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
有時候在其他檔案轉換成SPSS檔時,可能出現在一個變項內,以特定符號將不同數字分開的(如下圖,第三行4,7,8),這時無法用SPSS進行有效分析。本文將說明如何使用SPSS將特定符號分開的數字轉換成不同變項,光看文字可能太過抽象,請看圖文教學。
Thumbnail
本文將介紹影像的基本操作包括:影像的讀取、顯示、保存,以及一些常見的操作如裁剪、旋轉、縮放等。 語法介紹 讀取影像: cv2.imread函數的參數是影像的檔案路徑。讀取後的影像以NumPy的ndarray形式表示。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
Thumbnail
Stable Diffusion 的 Mov2Mov 套件是一個非常強大的工具,讓你可以自動化和簡化視頻轉換過程。這個套件特別適合那些希望在視頻中進行面部替換、添加配件或改變角色外觀的人。這裡是關於這個套件的一些詳細介紹: 功能和優點 自動化視頻轉換: Mov2Mov 可以自動化視頻到
Thumbnail
上篇我們簡單的了解了 TTS 想要達到的目標,但是對於訓練資料的處理、網路架構、損失函數、輸出分析等考慮到篇幅尚未解釋清楚,這篇將針對訓練資料處理中的文字部分進行詳細說明,讓我們開始吧。
Thumbnail
本篇內容介紹如何使用 Python中的 moviepy library 簡單的剪影片。 先安裝moviepy library , 用pip install moviepy , 可參考官方文件。 要剪的影片和python檔要在同個資料夾中,若不在同個位置要用 os library 更換路徑
Thumbnail
會不會有時候只是想要簡單的快速影片去背,剛好電腦沒有安裝適合的影片剪接軟體呢?pinokio這網站提共大量的AI小工具,只要安裝他在桌面,立即可獲最新的AI工具,並且他隨時更新最新版本,省下大量爬文搜尋時間,正適合不會程式的使用者一鍵無腦享受AI帶來的便利與快速。 這次介紹裡面一個好用的小工具"R
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
有時候在其他檔案轉換成SPSS檔時,可能出現在一個變項內,以特定符號將不同數字分開的(如下圖,第三行4,7,8),這時無法用SPSS進行有效分析。本文將說明如何使用SPSS將特定符號分開的數字轉換成不同變項,光看文字可能太過抽象,請看圖文教學。
Thumbnail
本文將介紹影像的基本操作包括:影像的讀取、顯示、保存,以及一些常見的操作如裁剪、旋轉、縮放等。 語法介紹 讀取影像: cv2.imread函數的參數是影像的檔案路徑。讀取後的影像以NumPy的ndarray形式表示。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。