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

使用Python給視頻添加字幕和語(yǔ)音的操作方法

 更新時(shí)間:2025年11月26日 09:41:06   作者:ycc陽(yáng)  
本文介紹了如何使用Python庫(kù)實(shí)現(xiàn)視頻添加字幕和語(yǔ)音的功能,包括使用pyttsx3將文字轉(zhuǎn)換為語(yǔ)音、使用pydub處理音頻格式以及使用moviepy合成字幕和音頻,需要的朋友可以參考下

前言

最近嘗試用python實(shí)現(xiàn)給一個(gè)視頻添加字幕和語(yǔ)音,查了很多博客后有了一個(gè)拼拼湊湊的方法:

  1. 使用"pyttsx3"來(lái)實(shí)現(xiàn)“文字到音頻”的轉(zhuǎn)換;
  2. 使用"pydub"來(lái)對(duì)得到的音頻進(jìn)行加工和處理;
  3. 使用"moviepy"來(lái)合成字幕和語(yǔ)音文件。

(注:本篇僅作為個(gè)人小白的學(xué)習(xí)記錄)

一、"pyttsx3"實(shí)現(xiàn)“文字到音頻”的轉(zhuǎn)換

pyttsx3是一個(gè)很方便的實(shí)現(xiàn)從“文字”到“語(yǔ)音”的庫(kù),安裝和使用都很簡(jiǎn)單,windows下安裝只需要:

pip install pyttsx3

如果要簡(jiǎn)單實(shí)現(xiàn)“文字段”的語(yǔ)音播放也很簡(jiǎn)單:

import pyttsx3
#	語(yǔ)音模塊初始化
engine = pyttsx3.init()
#	設(shè)置要播報(bào)的字符串
text = "哈哈哈哈哈哈"
engine.say(text)
#	等待運(yùn)行
engine.runAndWait()

還可以在這基礎(chǔ)上將音頻文件保存下來(lái):

outFile = "output.aiff"
engine.save_to_file(text, outFile)
#	注意下面這句不能少,否則無(wú)法正常生成音頻文件
engine.runAndWait()

這里需要注意的一點(diǎn)是,使用pyttsx3能夠?qū)⑽淖洲D(zhuǎn)為音頻,但是其編碼格式特殊,保存下來(lái)的文件也是"aiff"格式的音頻文件,所以如果要使用"MP3"格式則需要pydub中的AudioSegment模塊來(lái)對(duì)其進(jìn)行更改:

AudioSegment.from_file(outFile).export("Python.mp3", format="mp3")

當(dāng)然,我也嘗試了強(qiáng)行利用“save_to_file”將文件保存為“MP3”格式,雖然能夠正常播放,但是這個(gè)文件是存在問(wèn)題的(比如后面使用pydub進(jìn)行處理的時(shí)候會(huì)因?yàn)闊o(wú)法讀入而報(bào)錯(cuò))

參考博客:https://blog.csdn.net/qq_19394437/article/details/97567298?spm=1001.2014.3001.5506

二、"pydub"處理音頻

1.安裝

pip install pydub

安裝完pydub之后還需要安裝ffmpeg,可以選擇去github下載安裝包,我這里給出網(wǎng)盤(pán)分享(某位老哥分享了網(wǎng)盤(pán)鏈接,我找不到原文鏈接了抱歉)

鏈接: https://pan.baidu.com/s/1dsE8p9YL-ji48Mg0vTfaMA
提取碼: irxi

解壓后在bin文件夾下有以下三個(gè)文件:

復(fù)制bin文件路徑,添加到環(huán)境變量中,然后在cmd窗口運(yùn)行如下命令:

ffmpeg -version

若正常輸出則代表安裝完了

(當(dāng)然這里安裝完了,在后面實(shí)際使用的時(shí)候還可能會(huì)出問(wèn)題)

2.測(cè)試

from pydub import AudioSegment

#	讀入MP3音頻文件
audio = AudioSegment.from_mp3('Python.mp3')

#	簡(jiǎn)單加一段空白(靜音)片段
X = 2000	#ms
silent = AudioSegment.silent(duration=X)
new_audio = silent + audio

#	保存文件
new_audio.export("new_Python.mp3", format="mp3")

代碼運(yùn)行到這里一般都會(huì)報(bào)錯(cuò),類(lèi)似于"RuntimeWarning: Couldn’t find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn(“Couldn’t find ffmpeg or avconv - defaulting to ffmpeg, but may not work”, RuntimeWarning)”,或者是"RuntimeWarning: Couldn’t find ffprobe or …"

我也不知道具體為什么,可能是因?yàn)榄h(huán)境路徑的問(wèn)題?
直接給出解決辦法:

報(bào)錯(cuò)應(yīng)該會(huì)給一個(gè)"pydub"中的一個(gè)叫“utils.py”文件的路徑,
第一步:找到該文件
第二步:找到一個(gè)叫"which(program)"的函數(shù)
第三步:添加前面下載的"ffmpeg"的“bin”文件路徑
第四步:重啟電腦

補(bǔ)充(第三步實(shí)例):

重啟后應(yīng)該能夠正常運(yùn)行了。

三、“moviepy”合成字幕和音頻

1.安裝

pip install moviepy
#	實(shí)際上安裝moviepy的時(shí)候會(huì)自動(dòng)安裝下面兩個(gè)庫(kù)
pip install imageio
pip install imageio-ffmpeg

另外需要單獨(dú)安裝ImageMagick軟件并添加到環(huán)境變量中

2.測(cè)試

from moviepy.editor import *

def videocaption(src_mp4, dst_mp4, dottemp):
    # input:
    #   src_mp4: the path of wait-to-dispose video
    #   dst_mp4: the path of after-dispose video
    #	dottemp--字幕列表['text1','text2','text3',...]
    
    #	加載視頻
    video = VideoFileClip(src_mp4)

    # 逐句添加字幕
    time = [2,2,2,...]	#	字幕持續(xù)時(shí)間,自行設(shè)置
    start = [4,6,8,10,...]	#	字幕開(kāi)始時(shí)間,自行設(shè)置
    position = ['bottom','center',...]	#	顯示位置,自行設(shè)置
    
    txts = []
    for si,sentence in enumerate(dottemp):
    	txt = (TextClip(sentence, fontsize=40,
    					font='SimHei', size=(1900, 40),
              			align='center', color='red')
             .set_position(position[si])
             .set_duration(time[si]).set_start(start[si]))
        txts.append(txt)

    # 合成字幕
    video = CompositeVideoClip([video, *txts])
    # 合成音頻
    videos = video.set_audio(AudioFileClip('Python.mp3'))
    # 保存視頻,注意加上參數(shù)audio_codec='aac',否則音頻無(wú)聲音
    videos.write_videofile(dst_mp4, audio_codec='aac')

if __name__ == '__main__':
    #	輸入輸出路徑
    src_mp4 = r'input.mp4'
    dst_mp4 = r'output.mp4'
    #	字幕列表
    dottemp = ['test1','test2','test3']
    #	合成視頻
    videocaption(src_mp4,dst_mp4,dottemp)

代碼可能會(huì)有點(diǎn)問(wèn)題,自行調(diào)試修改

總結(jié)

到此這篇關(guān)于使用Python給視頻添加字幕和語(yǔ)音的操作方法的文章就介紹到這了,更多相關(guān)Python視頻添加字幕和語(yǔ)音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談python寫(xiě)入大量文件的問(wèn)題

    淺談python寫(xiě)入大量文件的問(wèn)題

    今天小編就為大家分享一篇淺談python寫(xiě)入大量文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python使用PIL庫(kù)拼接圖片的詳細(xì)教程

    Python使用PIL庫(kù)拼接圖片的詳細(xì)教程

    在圖像處理中,拼接圖片是一項(xiàng)常見(jiàn)的任務(wù),無(wú)論是為了創(chuàng)建全景圖、合并多張圖片,還是為了展示對(duì)比,拼接圖片都能帶來(lái)很大的便利,Python的Pillow庫(kù)(PIL的一個(gè)分支)提供了強(qiáng)大的圖像處理功能,包括圖片的拼接,下面是一個(gè)詳細(xì)的教程,需要的朋友可以參考下
    2024-12-12
  • Python入門(mén)篇之對(duì)象類(lèi)型

    Python入門(mén)篇之對(duì)象類(lèi)型

    本章中我們將講述Python的對(duì)象類(lèi)型,包括數(shù)字、整型、布爾型、長(zhǎng)整形、浮點(diǎn)型、復(fù)數(shù)型、字符串、列表、元組、字典等。
    2014-10-10
  • python基于TCP實(shí)現(xiàn)的文件下載器功能案例

    python基于TCP實(shí)現(xiàn)的文件下載器功能案例

    這篇文章主要介紹了python基于TCP實(shí)現(xiàn)的文件下載器功能,結(jié)合具體實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)的tcp協(xié)議下載功能客戶(hù)端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 玩轉(zhuǎn)Python發(fā)短信的實(shí)現(xiàn)

    玩轉(zhuǎn)Python發(fā)短信的實(shí)現(xiàn)

    用Python實(shí)現(xiàn)發(fā)短信功能,當(dāng)監(jiān)控到問(wèn)題出現(xiàn)時(shí),短信報(bào)警,使問(wèn)題能得到及時(shí)的處理。當(dāng)然,我相信,用Python發(fā)短信應(yīng)用場(chǎng)景不止此一處,下面我們開(kāi)始Python發(fā)短信的實(shí)現(xiàn),感興趣的朋友參考下吧
    2022-01-01
  • Pycharm運(yùn)行加載文本出現(xiàn)錯(cuò)誤的解決方法

    Pycharm運(yùn)行加載文本出現(xiàn)錯(cuò)誤的解決方法

    今天小編就為大家分享一篇Pycharm運(yùn)行加載文本出現(xiàn)錯(cuò)誤的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python中第三方庫(kù)Requests庫(kù)的高級(jí)用法詳解

    Python中第三方庫(kù)Requests庫(kù)的高級(jí)用法詳解

    雖然Python的標(biāo)準(zhǔn)庫(kù)中urllib2模塊已經(jīng)包含了平常我們使用的大多數(shù)功能,但是它的API使用起來(lái)讓人實(shí)在感覺(jué)不好。它已經(jīng)不適合現(xiàn)在的時(shí)代,不適合現(xiàn)代的互聯(lián)網(wǎng)了。而Requests的誕生讓我們有了更好的選擇。本文就介紹了Python中第三方庫(kù)Requests庫(kù)的高級(jí)用法。
    2017-03-03
  • FFT快速傅里葉變換的python實(shí)現(xiàn)過(guò)程解析

    FFT快速傅里葉變換的python實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了FFT快速傅里葉變換的python實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • python?Socket無(wú)限發(fā)送接收數(shù)據(jù)方式

    python?Socket無(wú)限發(fā)送接收數(shù)據(jù)方式

    這篇文章主要介紹了python?Socket無(wú)限發(fā)送接收數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python基礎(chǔ)之類(lèi)屬性和實(shí)例屬性

    python基礎(chǔ)之類(lèi)屬性和實(shí)例屬性

    這篇文章主要介紹了python類(lèi)屬性和實(shí)例屬性,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10

最新評(píng)論

达日县| 正定县| 丰原市| 阜新| 邹平县| 行唐县| 正镶白旗| 思南县| 区。| 安国市| 墨竹工卡县| 连江县| 闵行区| 车致| 云浮市| 赞皇县| 三穗县| 通渭县| 南昌县| 禹城市| 宜州市| 大关县| 天全县| 镇沅| 陇西县| 壤塘县| 体育| 阿巴嘎旗| 临颍县| 大洼县| 南岸区| 界首市| 司法| 辽宁省| 松江区| 常熟市| 甘孜县| 菏泽市| 孟州市| 沙湾县| 兴和县|