python 录音vad_2020-02-25 python使用ffmpeg、speech-vad-demo、百度语音识别生成字幕
應用場景:
最近在看田連元老先生的《水滸傳》,總感覺篇篇錦銹字字珠璣,遇上精彩之處,總想要搞成文字資料保存下來,奈何沒有字幕。作為一只懶得冒泡的程序猿,一邊聽一邊打字,是不可能的,這輩子都不可能。那怎么辦呢?當然是寫代碼嘍。
簡單說明:
python代碼:
代碼獲取254.flv,自12分13秒開始,時長為37秒的音頻,將這段音頻轉換成文字
# -*- coding: GBK -*-
import os
import paramiko
from aip import AipSpeech
# 任務一:以pcm的格式,獲取視頻文件的音軌,并截取指定的時間段。最后將文件復制到speech-vad-demo-master中
vad_home=r'D:\cygwin64\cygwin64_Root\home\caicaidi\speech-vad-demo-master'
video_name = '254.flv'
#開始時間
start_time = '00:12:13'
#截取的時間長度
time_span = '00:00:37'
def get_pcm(video_name,start_time,time_span):
# 分離視頻的音頻為pcm格式
command_video_to_wav = 'ffmpeg -y -i %s -f s16le -ac 1 -ar 16000 output.pcm'%(video_name)
os.system(command_video_to_wav)
#分割pcm
command_cut_wav = 'ffmpeg -y -f s16be -ac 1 -ar 16000 -acodec pcm_s16le -i output.pcm -ss %s -t %s -f s16be -ac 1 -ar 16000 -acodec pcm_s16le output_cut.pcm'%(start_time,time_span)
os.system(command_cut_wav)
command_copy = r'copy output_cut.pcm %s\pcm\16k_1.pcm /y'%(vad_home)
os.system(command_copy)
# 任務二:使用speech-vad-demo-master處理任務一獲得的文件,得到多個長度在10s到60s的文件
def ssh_connect(hostname,username,password,port=22):
#創建一個ssh的客戶端,用來連接服務器
ssh = paramiko.SSHClient()
#創建一個ssh的白名單
know_host = paramiko.AutoAddPolicy()
#加載創建的白名單
ssh.set_missing_host_key_policy(know_host)
#連接服務器
ssh.connect(hostname,port,username,password)
return ssh
def eve_vad_demo():
ssh = ssh_connect('127.0.0.1','caicaidi','123465')
#清空output_pcm
stdin,stdout,stderr = ssh.exec_command("cd /home/caicaidi/speech-vad-demo-master/output_pcm;rm *")
#執行vad-demo.exe。注意:"./home/caicaidi/speech-vad-demo-master/vad-demo.exe"是無法正常執行的
stdin,stdout,stderr = ssh.exec_command("cd /home/caicaidi/speech-vad-demo-master;./vad-demo.exe")
#stdout 標準格式的輸出,是一個讀權限的文件對象
print(stdout.read().decode())
# 任務三:調用百度AI的語音識別接口,識別任務二獲得的文件
def get_client():
APP_ID = '百度應用APP_ID '
API_KEY = '百度應用API_KEY '
SECRET_KEY = '百度應用SECRET_KEY '
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
return client
# 讀取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
if __name__ == '__main__':
get_pcm(video_name,start_time,time_span)
eve_vad_demo()
client = get_client()
output_pcm_path = r"D:/cygwin64/cygwin64_Root/home/caicaidi/speech-vad-demo-master/output_pcm/"
dirs = os.listdir(output_pcm_path)
for file in dirs:
fileName = str(file)
if fileName.endswith('A.pcm'):
pcm_path = output_pcm_path+fileName
data = client.asr(get_file_content(pcm_path), 'pcm', 16000, {'dev_pid': 1537})
print(data['result'])
結果:
image.png
雖然會多幾個字少幾個字的,還將“眨么眨么眼”整成了”咱們咱們演“。不過啊,已經很好啦。
其他:
工作目錄:
image.png
speech-vad-demo-master所在的目錄:
D:/cygwin64/cygwin64_Root/home/caicaidi/speech-vad-demo-master/
總結
以上是生活随笔為你收集整理的python 录音vad_2020-02-25 python使用ffmpeg、speech-vad-demo、百度语音识别生成字幕的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHM系统简介
- 下一篇: checksum命令 linux_数字签