天天看點

Python語音轉文字、音頻切割、語音識别

不知道你有沒有錄過自我介紹的視訊,尤其是那種加上PPT播放的長時間視訊

可能因為說錯一句話就得重來,又或者因為思考而暫停時間太久又得重來,以至于弄了兩個小時才做好五分鐘的視訊

是以就像為了答辯一樣,為了讓演講流利不卡殼一遍過,不停的熟讀稿子,又或者提前花費大量時間把稿子寫好,在錄屏的時候對着讀

Python語音轉文字、音頻切割、語音識别

但是光寫稿子也要花費了大量的時間啊

是以我想到的方法就是先對着照PPT說一遍并錄下來,再将用代碼自動将音頻自動提取出來轉成文字,然後第二遍正式錄制視訊的時候看着生成的講稿就不用因為不熟練而卡殼,同時也省去了一個個碼字的時間消耗

是以為了更好的去錄制視訊,這裡将上述過程全部用代碼流程化分享給大家

   視訊提取音頻

   音頻頻率轉化、音頻切割

   音頻轉成文字

1視訊提取音頻

如果你練習時是錄的視訊,那需要将視訊裡的語音提取出來,友善後期操作

當然這個過程目前在各個視訊剪輯軟體裡都可以一鍵分割,例如剪映、必剪、Pr等等

但是當任務量增加的時候,操作就顯得非常浪費時間,而用Python的話3行代碼就可以提取出來,就算任務量增加最多再加個循環即可

代碼如下

from moviepy.editor import AudioFileClip
# 導入視訊
my_audio_clip = AudioFileClip("一行玩Python/1012 視訊轉文字/11.mp4")
# 提取音頻并儲存
my_audio_clip.write_audiofile("一行玩Python/1012 視訊轉文字/11.wav")
      

2音頻轉文字

提取音頻之後就要把音頻轉成文字了,目前市面上有很多方式都可以快速的将視訊裡的音頻内容轉成文字

   科大訊飛、知意等付費平台

   剪映、Pr等剪輯如案件生成字幕

   百度雲、騰訊雲等國内接口

   GOogle、IBM、Bing等國外接口

   自己造輪子,語音識别訓練

   自己一邊聽一邊打字

雖然說有這麼多方法可以去實作這個需求,但任務量增長後,想不花錢,又想不花時間造輪子,最好的辦法就是用現成的接口

百度接口使用

申請百度接口

如果想用百度接口來批量處理,需要

百度語音API位址:

https://cloud.baidu.com/doc/SPEECH/index.html
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = 'xxx'
API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 讀取檔案
def get_file_content(file_path):
    with open(file_path, 'rb') as fp:
        return fp.read()

# 識别本地檔案
result = client.asr(get_file_content('音頻.wav' % i), 'wav', 16000, {
    'dev_pid': 1537  # 預設1537(國語 輸入法模型),dev_pid參數見本節開頭的表格
})

print(result['result'])
      

如果你恰巧是用mac錄的音頻,那就得對音頻進行降頻處理

因為百度接口隻能識别16 kHz的音頻,而mac錄的是48 kHz的音頻,當然用ffmpeg重采樣一下就可以

import ffmpeg
ffmpeg.input('輸入音頻.wav').output('輸出音頻.wav', ar=16000).run()
      

如果的你音頻比較長,但是百度短語音識别接口支援1分鐘以内的音頻,這時候需要對音頻進行分割處理

from pydub import AudioSegment
from pydub.utils import make_chunks

#blues檔案30s
audio = AudioSegment.from_file("voice.wav", "wav")

size = 30000  #切割的毫秒數

chunks = make_chunks(audio, size)  ##将檔案切割為59s一塊

for i, chunk in enumerate(chunks):
    ##枚舉,i是索引,chunk是切割好的檔案
    chunk_name = "voice{0}.wav".format(i)
    print(chunk_name)
    ##儲存檔案
    chunk.export(chunk_name, format="wav")
      

然後重采樣、剪切好的音頻循環調用百度API接口就可以完成了~

exe

當然,也有前輩利用百度API直接寫成了一個exe來使用

隻需要在剛才百度智能雲注冊申請賬号即可使用

Python語音轉文字、音頻切割、語音識别

3最後

而現在網際網路的大趨勢是視訊内容,了解視訊相關的應用對于做内容也非常有幫助

之前有前輩分享過如果做短視訊創作秘籍,就是把網際網路上最火的内容下載下傳個1、200個,然後拿來翻拍,畢竟火過的内容很大機率還會再火

當然有些人會向我過去一樣質疑,這tm不是抄襲嘛,但是很多内容本來就可以同主題多形式的,例如别人拍的炒蛋炒飯,那你同樣可以翻拍炒蛋炒飯,這有什麼不好的嗎

而批量下載下傳抖音之前介紹過,現在又可以把這些的視訊内容提取出來,下一步就可以進行批量翻拍,離實作一個小目标豈不是越來越近了

技術永不眠,下期見~