免費開源的語音辨識功能：Google Colab + Whisper large v3
Tags: google, colab, whisper, openai
Published: 2024-01-13 09:11:22

## 本篇要解決的問題

以往一場會議、訪問、議程，如果需要逐字稿，都需要人類手打出來（August 接過這工作），自從 OpenAI 的 Whisper API 問世後，才知道語音辨識的工作也可以讓 AI 來執行。

原本 August 是有私下製作一頁，讓自己還有朋友使用，但因為接 API 是要 $$ 的，因此就沒在本站釋出。直到去年底 Whisper 推出了 Large V3 後，才知道，哎呀，原來是開源的耶！開源的意思就是，如果本機硬體夠強，可以把 model 載下來，直接在作本機作語音辨識，不用付費就能使用 Whisper API。

但因為 August 的電腦不夠強，而且也不想直接就在本機安裝 Python，在同事的分享下，才知道 Google 有一個 Colab 的功能，讓我們這種路人也可以在上面寫 Python，一定使用量下都是免費的，Google 的說明是：

> Colab (全名為「Colaboratory」) 可讓你在瀏覽器中編寫及執行Python 程式碼，並具有以下優點：. 不必進行任何設定; 免付費使用GPU; 輕鬆共用.

既然有這麼好的工具，你各位還不刷起來~

本篇會示範怎麼使用 Google Colab + Whisper Large V3，來執行語音辨識。

更新：這幾天又發現了辨識速度更快，且更精準的 Faster Whisper，看完本篇後，請記得繼續閱讀〈[免費開源的語音辨識功能：Google Colab + Faster Whisper](https://www.letswrite.tw/colab-faster-whisper/)〉。

---

## Google Colab 設定為 GPU

其實這點也不用寫，但~~為了湊字數~~還是寫一下。

點擊 Colab 網址：<https://colab.research.google.com/?hl=zh-tw>，就會進入到 Colab 中，預設看到的畫面是這樣：

![Google Colab 首頁](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ey6d9xirz8pwcngt0jzk.png)

Colab 的檔案都會存到 Google 雲端硬碟上，點擊「新增記事本」，會看到以下畫面：

![點擊執行階段](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m1aqcgo0lqraxeoxsabx.png)

我們這一步是為了開啟 Colab 的 GPU，所以新增了記事本後，先點擊上方選單的「執行階段」->「變更執行階段類型」，在硬體加速器的選項上，就可以選擇 GPU：

![硬體加速器改為 GPU](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2kye703o3xrrgmz1z97p.png)

選完後再按下儲存，這一步就完成囉。

---

## 使用 Whisper Large V3 功能

以下程式碼的程式語言是 Python，而且是簡單使用的版本。

首先，先安裝 Whisper：

```python
!pip install git+https://github.com/openai/whisper.git
```

接著按下程式碼區塊，左邊有著播放 Icon 的按鈕，就會執行安裝：

![按下執行儲存格](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lvmcwzzm1g11a4j846jf.png)

執行完後，會看到很多的輸出訊息，點擊程式碼區塊那個垂直的 ... 按鈕，再選擇「清除輸出內容」，就可以清掉：

![清除輸出內容](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n642epl51cp333xv3atc.png)

剛剛的那行是安裝 Whisper，接下來點擊上面的「+程式碼」，在新增程式碼編輯區塊，貼上執行語音辨識的程式碼，如下：

```python
import whisper
import os
from google.colab import files

# 載入模型
model = whisper.load_model("medium") # tiny, base, small, medium, large, large-v2, large-v3

# 設定檔案路徑
audio_path = "letswrite.mp3" # 替換成你的檔案名稱

# 處理音頻檔案，指定繁體中文
result = model.transcribe(audio_path, prompt="請轉錄以下繁體中文的內容：")

# 印出結果
print(result["text"])

# 獲取不帶副檔名的檔案名稱
file_name = os.path.splitext(os.path.basename(audio_path))[0]

# 將結果保存為txt檔案
with open(f"{file_name}.txt", "w") as file:
  file.write(result["text"])
  files.download(f"{file_name}.txt")
```

這段程式碼，包含了使用 Whisper 作語音辨識，以及辨識成文字後會自動下載為 .txt 的檔案。

看到這篇的各位，複製貼上程式碼後，要改的地方有 2 個。

### 載入模型

第 6 行的：

```python
model = whisper.load_model("medium") 
```

是指要用哪一個 Whisper 的版本，可使用的版本如下表：

![model 說明表，資料來源 https://huggingface.co/openai/whisper-large-v3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjlqwatrmqwx1cgs450s.png)

參數量愈小，檔案就小，辨識速度也快，但是辨識的精準度就不高；反過來說，參數量愈大，檔案就愈大，辨識速度慢，但結果會更精準。

「English-only」如果有打勾，代表辨識英文的會比較精準，其它語系就沒這麼精準。

August 實際使用的結果，`medium` 的結果就很足夠了，而且比較會是繁體中文的版本。

`large` 辨識的結果會是最好的沒錯，但耗費的時間長很多，而且中文的部份很常會出現簡體中文。

要用哪個 model 來執行辨識，就看大家各自的需求。

### 檔案路徑

第 9 行，就是要選擇要辨識的檔案。

Google Colab 是 Google 的產品，所以可以直接使用 Google 雲端硬碟的檔案。

如果要使用雲端碟碟檔案，先點擊最左側那個資料夾的 Icon，再點擊有 Google 雲端硬碟 Icon 的按鈕，就會自動載入檔案進來：

![使用雲端硬碟檔案](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k4lnid3s23ci58txs460.png)

這邊示範直接從電腦本機上傳檔案就好，就不用再另行提供授權，我們改點擊上傳檔案的 Icon：

![點擊上傳本機檔案的按鈕](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mv8svw0i6h18wahn18zt.png)

選好本機檔案後，就會上傳上來。

選好檔案後，會看到一個提示訊息：

![提示檔案是暫時性存在的](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n2dpexhoi1hbj0jghptj.png)

Google Colab 是一個免費工具，所以不會 24 小時無時無刻是 ON 的狀態，不然大家就會把它當免費主機來使用了。

所以當執行階段結束，所有傳上來的檔案都會被刪除。下次重新開啟檔案時，所有的程式碼也要重新執行。

上傳好檔案後，對著檔案點右鍵：

![複製路徑](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xyxo0iuyg28p0p95ni9j.png)

點擊「複製路徑」，再貼到第 9 行的 `audio_path`，Colab 就會知道要辨識的檔案是哪一個。

### 執行辨識

選好了 model，更新了檔案路徑，一樣點擊左側播放樣式的 Icon，Colab 就會執行程式碼，讓 Whisper 幫我們辨識我們的檔案。

辨識結果如下圖：

![辨識結果](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xhaopbfijolzzitqeu7.png)

第一步會先載入指定的 model，接著執行辨識。

辨識完後，也會自動下載一份結果的 .txt 檔案。

語音辨識是不會加上標點符號、分段的，需要的話，就是複製結果文字後，丟給 ChatGPT 去加標點、改錯字、分段囉。

以上，就是本篇開源、免費的語音辨識功能。