注意:沒有“stepladder”的同學(xué)建議不要看啦
目錄
1. 安裝需要的包
2. 視頻轉(zhuǎn)音頻
3. 對音頻進(jìn)行切割
4. 對視頻進(jìn)行切割
5. 從音頻中識別出文本
5.1 使用離線方法
5.2 使用在線方法
5.3 兩種方法比較
6. 用到的包下載
1. 安裝需要的包
1.1 安裝SpeechRecognition包
pip install SpeechRecognition
1.2 安裝 PockSphinx包
在線裝總是失敗,采用本地安裝
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pocketsphinx
本機(jī)該項(xiàng)目是python3.7的環(huán)境所以選擇37
執(zhí)行本地安裝
下載語言包
SpeechRecognition · PyPI
?
?speech_recognition/pocketsphinx.rst at master · Uberi/speech_recognition · GitHub
?
?
?將下載后的文件復(fù)制到pocketsphinx的語言包目錄下
?解壓后如上圖,將這個zh-CN文件夾復(fù)制到你自己python環(huán)境所在的目錄下
1.3 安裝moviepy
pip install moviepy?
1.4 安裝pydub
pip install pydub
2. 視頻轉(zhuǎn)音頻
from moviepy.editor import AudioFileClip
from moviepy.video.io.VideoFileClip import VideoFileClip
from pydub import AudioSegment
from pydub.utils import make_chunks
import speech_recognition as sr
# 導(dǎo)入視頻,提取音頻并保存
def video_2_audio():
# 導(dǎo)入視頻
one_audio_clip = AudioFileClip('D:/temp002/000.mp4')
# 提取音頻并保存
one_audio_clip.write_audiofile('D:/temp002/000.wav')
pass
本例中運(yùn)行的000.mp4文件大約有35分鐘,這個提取音頻的過程挺慢的,用了好幾分鐘,為便于甄別最終效果,我對原始文件進(jìn)行了切割,只對某一部分做處理?
3. 對音頻進(jìn)行切割
def segment_audio():
pre_save_dir = r'D:/temp002/000_a/'
audio_file = r'D:/temp002/000.wav'
audio = AudioSegment.from_file(audio_file,'wav')
size = 30000 # 切割的毫秒數(shù)
chunks = make_chunks(audio,size) # 30s一個片段
for i,chunk in enumerate(chunks):
# chunk是切割好的文件
chunk_name = "v_{0}.wav".format(i)
print(chunk_name)
chunk.export(pre_save_dir+chunk_name,format='wav')
pass
pass
將音頻文件按30秒的時長進(jìn)行切割
?
?
4. 對視頻進(jìn)行切割
# 切割視頻
def segment_video():
pre_save_dir = r'D:/temp002/000_v/'
video_file = r'D:/temp002/000.mp4'
source_video = VideoFileClip(video_file)
video = source_video.subclip(0,30)
video.write_videofile(pre_save_dir+'0_v.mp4')
pass
視頻切割耗費(fèi)的時間比較長,我只切割出前30秒
?
5. 從音頻中識別出文本
5.1 使用離線方法
def voice_to_text_local():
audio_file = 'D:/temp002/000/v_0.wav'
r = sr.Recognizer()
with sr.AudioFile(audio_file) as source:
audio = r.record(source)
res_txt = r.recognize_sphinx(audio,language='zh-CN')
print(len(res_txt))
print(res_txt)
識別出的結(jié)果:
長度:241
地 調(diào) 降 耗 這里是 獨(dú)裁 堡 市 選出 本期 士兵 是 中國 版 拉 紐 股 復(fù) 牌 系列 的 第四 期 市 地 縣 也 使我們 中國 上市 公司 里 漲幅 最大 的 一批 公司 為 家 樂 福 看 他們 上市 以來 的 股價 走勢 和 經(jīng)濟(jì)部 的 最終 目的是 在 邵 氏 公司 的 年報(bào) 里 尋找 確定 新的 投資 機(jī)會 本期 我們 付款 的 公司 說 它 稱為 是 我們 先 看 上海 同 為 四 上司 以來 的 股價 走勢 泰國 衛(wèi)生 二零零零年 在 兒孫 交 所 上市
結(jié)果非常糟糕。。。?
5.2 使用在線方法
附加說明pycharm設(shè)置代理ip方法
File->Settings->System Settings->Http Proxy
?填上ip和端口
以下回歸正題:
def voice_to_text():
audio_file = 'D:/temp002/000/v_0.wav'
r = sr.Recognizer()
with sr.AudioFile(audio_file) as source:
audio = r.record(source)
res_txt = r.recognize_google(audio,language='zh-cn')
print(len(res_txt))
print(res_txt)
識別出的結(jié)果:
長度:149
大家好這里是獨(dú)裁暴雪選股本期視頻是中國百大牛股護(hù)盤系列的第4集這個系列是以我們中國上市公司里漲幅最大的一批公司為樣本復(fù)盤他們上市以來的股價走勢和經(jīng)濟(jì)路到最終的目的是在上市公司的年報(bào)里尋找確定性的投資機(jī)會本期我們付款的公司是海康威視我們先看一下??低暽鲜幸詠淼墓蓛r走勢排行為是2010年在深交所上市
?還不錯
5.3 兩種方法比較
人工識別的結(jié)果:
大家好這里是讀財(cái)報(bào)學(xué)選股本期視頻是中國百大牛股復(fù)盤系列的第4集這個系列是以我們中國上市公司里漲幅最大的一批公司為樣本復(fù)盤他們上市以來的股價走勢和經(jīng)濟(jì)情況,最終的目的是在上市公司的年報(bào)里尋找確定性的投資機(jī)會,本期我們復(fù)盤的公司是海康威視我們先看一下??低暽鲜幸詠淼墓蓛r走勢,??低曉?010年在深交所上市
比較兩種方法:
本地方法獲得的結(jié)果基本不可用;在線的方法沒有出太多差錯文章來源:http://www.zghlxwxcb.cn/news/detail-401709.html
6. 用到的包下載
鏈接:https://pan.baidu.com/s/1tDO3mNAqraBpbSnjqv6idQ?
提取碼:zpjk文章來源地址http://www.zghlxwxcb.cn/news/detail-401709.html
到了這里,關(guān)于python_視頻中語音識別轉(zhuǎn)出文本的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!