首頁  >  文章  >  科技週邊  >  真快!幾分鐘就把視訊語音辨識為文字了,不到10行程式碼

真快!幾分鐘就把視訊語音辨識為文字了,不到10行程式碼

WBOY
WBOY轉載
2024-02-27 13:55:02600瀏覽

真快!幾分鐘就把視訊語音辨識為文字了,不到10行程式碼

大家好,我是風箏

#兩年前,將音訊視訊檔案轉換為文字內容的需求難以實現,但如今只需幾分鐘便可輕鬆解決。

據說一些公司為了獲取訓練數據,已經對抖音、快手等短視頻平台上的視頻進行了全面爬取,然後將視頻中的音頻提取出來轉換成文本形式,用作大數據模型的訓練語料。

如果您需要將視訊或音訊檔案轉換為文字,可以嘗試今天提供的這個開源解決方案。例如,可以搜尋影視節目的對話出現的具體時間點。

話不多說,進入正題。

Whisper

這個方案就是OpenAI 開源的Whisper,當然是用Python 寫的了,只需要簡單安裝幾個包,然後幾行程式碼一寫,稍等片刻(根據你的機器性能和音視頻長度不一),最終的文字內容就出來了,就是這麼簡單。

GitHub 倉庫位址:https://github.com/openai/whisper

Fast-Whisper

儘管已經相當簡化,但對於程序員而言仍不夠精簡。畢竟,程式設計師往往偏愛簡潔有效率。雖然安裝和呼叫Whisper已經相對容易,但仍需要單獨安裝PyTorch、ffmpeg,甚至Rust。

因此,Fast-Whisper應運而生,它比Whisper更快、更簡潔。 Fast-Whisper並非只是對Whisper進行簡單封裝,而是透過採用CTranslate2重新建構了OpenAI的Whisper模型。 CTranslate2是Transformer模型的高效推理引擎。

總結一下,也就是比 Whisper 更快,官方的說法是比 Whisper 快了 4-8 倍。不僅能支援 GPU ,還能支援 CPU,連我這台破 Mac 也能用。

GitHub 倉庫位址:https://github.com/SYSTRAN/faster-whisper

使用起來就兩步驟。

  1. 安裝依賴套件
pip install faster-whisper
  1. #寫程式碼,
from faster_whisper import WhisperModelmodel_size = "large-v3"# Run on GPU with FP16model = WhisperModel(model_size, device="cuda", compute_type="float16")# or run on GPU with INT8# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")# or run on CPU with INT8# model = WhisperModel(model_size, device="cpu", compute_type="int8")segments, info = model.transcribe("audio.mp3", beam_size=5)print("Detected language '%s' with probability %f" % (info.language, info.language_probability))for segment in segments:print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

##沒錯,就是這麼簡單。

能做什麼呢
  1. 正好有個朋友想做短視頻,發一些雞湯文學的視頻,雞湯就來自於一些名家訪談的視頻。但是,他又不想把完整的影片看一遍,就想用最快的方式把文字內容弄下來,然後讀文字,因為讀文字要比看一篇影片快的多,而且還可以搜尋。
  2. 我就說,連完整的看一篇影片的虔誠之心都沒有,能經營好帳號嗎。
  3. 於是我幫他做了一個,就是用的 Fast-Whisper。
  4. 客戶端

客戶端用 Swift ,只支援 Mac 端。

選則一個影片;

然後點擊「提取文字」,這時會呼叫Python 接口,需要等待一段時間;

載入解析出的文本以及出現的開始、截止時間;

選了一個開始時間和一個結束事件;
點擊「匯出」按鈕,影片片段就導出了;
### ####,長度00:10############服務端#########服務端當然就是Python ,然後用Flask 包裝一下,對外放開介面。 ######
from flask import Flask, request, jsonifyfrom faster_whisper import WhisperModelapp = Flask(__name__)model_size = "large-v2"model = WhisperModel(model_size, device="cpu", compute_type="int8")@app.route('/transcribe', methods=['POST'])def transcribe():# Get the file path from the requestfile_path = request.json.get('filePath')# Transcribe the filesegments, info = model.transcribe(file_path, beam_size=5, initial_prompt="简体")segments_copy = []with open('segments.txt', 'w') as file:for segment in segments:line = "%.2fs|%.2fs|[%.2fs -> %.2fs]|%s" % (segment.start, segment.end, segment.start, segment.end, segment.text)segments_copy.append(line)file.write(line + '\n')# Prepare the responseresponse_data = {"language": info.language,"language_probability": info.language_probability,"segments": []}for segment in segments_copy:response_data["segments"].append(segment)return jsonify(response_data)if __name__ == '__main__':app.run(debug=False)
#########

以上是真快!幾分鐘就把視訊語音辨識為文字了,不到10行程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除