簡介
Whisper 是 OpenAI 的一項語音處理專案,旨在實現語音的識別、翻譯和生成任務。作為基於深度學習的語音識別模型,Whisper 具有高度的智慧化和準確性,能夠有效地轉換語音輸入為文字,並在多種語言之間進行翻譯。透過不斷的最佳化和更新,Whisper 致力於提供更加優質和高效的語音處理解決方案,以滿足不同場景和需求下的語音互動應用。
- 官網地址:https://openai.com/research/whisper
- github 地址:https://github.com/openai/whisper?tab=readme-ov-file
Whisper 的優點
Whisper 藉助豐富多樣的資料集,這些資料集中的語音資料與網際網路上的文字記錄相匹配,並結合了一種名為“注意力機制”的技術。這項技術使得 Whisper 在處理語音時,能夠更加有效地捕捉到語音中的關鍵資訊。
這種綜合運用資料和先進技術的方式,使得 Whisper 提高了其在各種環境下的健壯性和準確性,能夠實現更為精確、智慧的語音識別和翻譯,為使用者提供更加出色的語音處理體驗。
多工
Whisper 並不僅僅是預測給定音訊的單詞,雖然這是是語音識別的核心,但它還包含許多其他附加的功能元件,例如語言活動檢測、說話人二值化和逆文字正態化。
採用 Transformer 序列到序列模型可以實現針對不同的語言處理任務。包括以下幾種:
- 語音識別
- 語音翻譯
- 口語識別
- 語音活動檢測
這些任務的輸出由模型預測的令牌序列表示,使得單個模型可以代替傳統的語音處理管道中的多個元件,如下所示:
應用
安裝
openai-whisper
openai-whisper 與 python 3.8-3.11 和最新的 PyTorch 版本相容。
使用 pip 命令安裝:pip install -U openai-whisper
ffmpeg
openai-whisper 需要 ffmpeg 的環境,ffmpeg 是一個開源的跨平臺音影片處理工具和框架,可以用來錄製、轉換和流式傳輸音影片內容 。
官網:https://ffmpeg.org/
MAC
- 安裝:brew install ffmpeg
- 驗證:ffmpeg -version 出現版本資訊且無報錯表示安裝成功。
![在這裡插入圖片描述](https://i-blog.csdnimg.cn/direct/6ae1237ec8dc4676832e1d6683e4e4da.png)
Windows
安裝:進入下載連結:https://www.gyan.dev/ffmpeg/builds/#release-builds,選擇版本下載安裝:
環境配置:下載解壓完成後,需要將 Ffmpeg 的執行檔案坐在目錄新增到系統的環境變數中。
驗證:在 cmd 中輸入 ffmpeg -version 出現版本資訊且無報錯表示安裝成功。
命令列
# 將音訊的內容轉為文字,使用base模型whisper demo1.mp3 --model base --task transcribe
命令列常用引數
引數 | 含義 | 預設 |
---|---|---|
--model | 要使用的 Whisper 模型名稱 | small |
--task | 轉錄(transcribe)或翻譯(translate) | transcribe |
--language | 指定執行的語言 | None |
--temperature | 指定輸出內容的相似度 | 0 |
--output_dir | 指定輸出檔案的儲存路徑 | . |
Python 程式碼
import whisper
# 初始化一個 base 模型
model = whisper.load_model("base")
# 傳入音訊檔案,並得到音訊輸出的文字內容
res = model.transcribe("demo.mp3")
print(res["text"])
模型呼叫
安裝 openai 第三方庫,本篇教程使用 1.16.1 版本的 openai:pip install openai
def test_openai_whisper():
# 初始化OpenAI物件
client = OpenAI(base_url="xxx",api_key="xxx")
# 開啟一個音訊檔案
audio_file1 = open("demo1.mp3", 'rb')
audio_file2 = open("demo2.mp3", 'rb')
# 選擇模型,並且轉錄音訊的內容
res1 = client.audio.transcriptions.create(model="whisper-1", file=audio_file1)
res2 = client.audio.transcriptions.create(model="whisper-1", file=audio_file2)
# 翻譯為英文
res3 = client.audio.translations.create(model="whisper-1", file=audio_file2)
print(f"audio1轉錄結果為:{res1.text}")
print(f"audio2轉錄結果為:{res1.text}")
print(f"audio2翻譯結果為:{res1.text}")
總結
- 瞭解 Whisper 相關概念。
- 完成環境安裝。
- 學會基礎示例練習。