---
# System prepended metadata

title: yt-dlp 下載會限影片 & whisper 逐字稿

---

# yt-dlp 下載會限影片 & whisper 逐字稿
**以下用詞可能有誤 只是把自己做的事記錄下來**

## 本地端執行 (適用於 Linux)

### yt-dlp
[yt-dlp 下載位址](https://github.com/yt-dlp/yt-dlp#installation)
也可以使用 pip 直接載
```!
pip install yt-dlp
```
Example :
```!
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" https://youtu.be/0d5_sD2g5mw
```
僅下載音檔
```
yt-dlp https://youtu.be/0d5_sD2g5mw --extract-audio --audio-format wav
```

(如果有找不到網頁等等狀況就把yt-dlp更新或重裝一次

### 下載會限影片
先在 firefox 下載擴充 App - Cookie Quick Manager，按下 Manage All Cookies
![](https://hackmd.io/_uploads/SyPNsEqph.png)

右上角板手按下去把Export的Template設為Netscape
![](https://hackmd.io/_uploads/S1OXnNcT3.png)

將以下 Domains 右鍵複製貼到 cookie.txt
```!
.youtube.com
.accounts.google.com
.google.com
.google.com.tw
```
把 cookie 抓下來存到 cookiejar.txt
```!
curl -b cookie.txt --cookie-jar cookiejar.txt "https://youtube.com"
```
使用 cookiejar.txt 下載影片
```!
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" --cookies "cookiejar.txt" https://youtu.be/K-doWbBP7OM
```
### 常用選項
```
--write-thumbnail: 把封面圖抓下來
--verbose: 顯示詳細資訊
--download-sections "*hh:mm:ss-hh:mm:ss": 直接載需要的片段
```

### 使用 ffmpeg 切割需要的片段
```
ffmpeg -i input_video.mp4 -ss 00:05:00 -to 00:10:00 -c copy output_video.mp4
```

### whisper.cpp
:::success
建置環境時建議使用 python3.10 版本
```!
conda create -n whisper python=3.10 -y
```
:::
### 下載 whisper.cpp
可以直接到 [whisper.cpp的github](https://github.com/ggerganov/whisper.cpp) 看，畢竟我只用部分的功能

下載 whisper.cpp
```!
git clone https://github.com/ggerganov/whisper.cpp.git
```
編譯 main 和下載 models，我只用 large
```!
make
make large
```

### 執行程式 <a name="execution"></a>

Example:
```!
./main -m models/ggml-large.bin -l japanese -f ~/Downloads/RIME.wav -ovtt 
```
```
-m: 選擇 models
-l: 選擇要音檔的語言
-osrt, -ovtt, -otxt: 輸出成想要的格式，我都用 vtt
```

音檔須為 16kHz 的 wav 檔
Example:
```!
ffmpeg -i RIME.mp4 -ar 16000 -ac 1 -c:a pcm_s16le RIME.wav
```

### CoreML Support (for Apple Silicon)
[原 gitbub 連結](https://github.com/ggerganov/whisper.cpp#core-ml-support)

在 Apple Silicon 上可以加快轉譯速度的東西，個人實測快了約2.45倍左右
首先 pip 安裝需要的東西
```!
pip install ane_transformers
pip install openai-whisper
pip install coremltools
```
:::warning
記得去 app store 安裝 Xcode，並更新到最新版本
:::

安裝 command-line tool
```!
xcode-select --install
```
接下來要生一個 CoreML Model，這邊先用小 model 當範例
```!
./models/generate-coreml-model.sh base.en
```
(中途有跳出一個要同意 Xcode 使用條款之類的東西，直接 Agree 就好)

如果可以順利跑完並看到你的 models 資料夾的 model 已經被替換就代表成功了，跑 `base.en` 記得是幾分鐘就跑完了

==我個人是用 large model，跑了整整11小時40分鐘，如果不想這樣燒電腦建議用 median 之類的 model 就好==

再來編譯剛剛生的 model
```!
make clean
WHISPER_COREML=1 make -j
```
這樣就可以直接用上面的[執行程式](#execution)來跑了
接著應該會看到以下訊息
```!
whisper_model_load: mem required  = 3557.00 MB (+   71.00 MB per decoder)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: model ctx     = 2951.27 MB
whisper_model_load: model size    = 2950.66 MB
whisper_init_state: kv self size  =   70.00 MB
whisper_init_state: kv cross size =  234.38 MB
whisper_init_state: loading Core ML model from 'models/ggml-large-encoder.mlmodelc'
whisper_init_state: first run on a device may take a while ...
```
當初等了好一段時間都沒 load 好，後來發現 github 上也有人有這問題，只要把 Activity Monitor 中的 `AneCompilerService` 給 force-quit 掉就OK了，不過就是每次都必須 force-quit 就是了

```!
whisper_init_state: first run on a device may take a while ...
whisper_init_state: Core ML model loaded

system_info: n_threads = 4 / 8 | AVX = 0 | AVX2 = 0 | AVX512 = 0 | FMA = 0 | NEON = 0 | ARM_FMA = 0 | F16C = 0 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | COREML = 1 | OPENVINO = 0 | 
```
load 完後看到 `COREML = 1` 應該就沒有問題了!

## Google Colab 雲端執行
進入 Colab 後右上角硬體設備的選單打開，點選 Change runtime type (變更執行階段)，選擇 T4 GPU，連接完成後就可以開心的用 ytdlp 和 whisper 了

安裝 yt-dlp
```!
!pip install yt-dlp
```
下載音檔
```!
!yt-dlp https://youtu.be/--khbXchTeE --extract-audio --audio-format wav
```
安裝 whisper
```!
!pip install -U openai-whisper
```
使用 turbo 模型執行 (輸入檔案可以直接右鍵複製檔案路徑)
```!
!whisper /content/GPT4_intro.wav --language English --model turbo
```