七分鐘 › 語音檔
七分鐘學會製作語音檔並匯入遊戲
七分鐘能完成的是「查出播報員為什麼不唸你的球員名字」,而那正是絕大多數人真正想解決的問題。至於「換掉那個聲音」,本站後來也做到了 ——這一堂先教怎麼查,做法在換掉遊戲的聲音那一課。
⏱ 七分鐘怎麼分配
| 做什麼 | 分鐘 |
|---|---|
| 列出遊戲裡的語音檔 | 1 |
| 看懂一個語音檔的內部切法 | 2 |
| 搞懂播報員為什麼跳過你的球員 | 3 |
| 決定怎麼處理 | 1 |
前置
- 已安裝的 MVP Baseball 2005
- Python 3.7 以上
- 下載 mvp_read_voice.py
🛟 動手之前:先完整備份整個遊戲資料夾
把整個遊戲資料夾複製一份到別的地方, 包括裡面存放紀錄的資料夾。不要挑檔案,整包複製最省事也最保險。
「紀錄」是指這些(它們跟遊戲檔混在同一個資料夾裡):
Support\MVP Baseball 2005\—— 遊戲自己建的, 裡面是設定(MVPOptions_Options.sav)與手把設定 (controller.cfg)。剛安裝好時沒有這個資料夾,玩過才出現。- 王朝、老闆模式、名單與玩家檔案的存檔(
*_Franchise.sav、*_Owner Mode.sav、*_Rosters.sav、*_Profile.sav)—— 沒有固定的資料夾名,你或你裝的模組包叫它什麼它就叫什麼。找不到就用這一行找:
dir /s /b "〔你的遊戲資料夾〕\*.sav"
find "〔你的遊戲資料夾〕" -name "*.sav"
上面第一行 Windows、第二行 Mac。 本站每一支工具都會自己備份它要動的那一個檔, 但那只保得住那一個檔 —— 整包備份保的是「你玩到現在的一切」。 完整做法看備份與還原 SOP。
👉 你要做的事
先看遊戲裡有哪些語音檔。
Windows:
python mvp_read_voice.py "〔你的遊戲資料夾〕" --list
Mac / Linux:
python3 mvp_read_voice.py "〔你的遊戲資料夾〕" --list
主播的全部語音集中在一個 212 MB 的檔裡 —— 本站測試機上是
data\audio\cd\spch_pbp\pbpdat.big。
它本身就是一長串語音、不是封裝檔,所以不會出現在上面這份清單裡,下一步要直接指它。
看它內部是怎麼切的。
Windows:
python mvp_read_voice.py "〔語音檔路徑〕" --blocks
Mac / Linux:
python3 mvp_read_voice.py "〔語音檔路徑〕" --blocks
⚠️ 這裡不能填上一步印出來的那幾個檔。上一步列的是封裝檔
(開頭四個字母是 BIGF,裡面裝著幾千段語音),
而 --blocks 只認開頭就是語音本身的檔(開頭四個字母是 SCHl)——
把封裝檔餵進去只會得到「停下來了:開頭不是 SCHl,這不是語音檔」。
手邊沒有單獨一段語音的話,直接指上一步提到的
data\audio\cd\spch_pbp\pbpdat.big(它會讀裡面第一段)。
搞懂「為什麼不唸我的球員」。
一句話版本
每位球員在名冊裡有一個語音號碼,播報員照那個號碼去語音庫找對應的錄音。新加進來的球員如果沒有配到號碼、或配到的號碼沒有錄音,播報員就跳過名字。
所以要讓他唸得出來,做法是把球員指到一個「已經有錄音」的號碼 ——通常是找一個發音接近的既有名字。這不需要做新的聲音檔。
那我自己的球員是幾號?這個號碼叫 audioid,存在名冊檔 data\database\attrib.dat 裡。上面那兩個指令看不到它,但本站有一支印得出來:應援曲那一課的 mvp_swap_chant.py 用 --give 預覽時會印出「要指給 某某某 audioid 4867」,名字給模糊字串還會一次列出多位。要自己看的話,欄位順序在不同名冊之間會變,永遠不要記欄號,要從檔案第一行的表頭找欄位名。整套查法與本站量到的覆蓋率寫在播報員為什麼不唸新球員的名字那一頁。
✅ 怎麼知道成功了
--list印出語音檔清單--blocks印出區塊切法- 你講得出播報員跳過名字的兩種可能(沒配到號碼/號碼沒有錄音),也知道那個號碼要去名冊的哪一欄看
❌ 出錯處理
| 症狀 | 怎麼辦 |
|---|---|
| 印「停下來了:開頭不是 SCHl,這不是語音檔」 | 你指到的是封裝檔(上一步列出來的那幾個都是)。--blocks 只吃開頭就是語音的檔,改指 pbpdat.big 那一種 |
| 印「這是一個資料夾,不是單一語音檔」 | 路徑指到資料夾了。要指到檔案本身,或是照它印出來的那一行改用 --list |
| 看不懂那些數字 | 正常。那一頁的完整版有逐欄解說 |
⚠️ 這一課到哪裡為止
2026-08-29 更新:本站現在寫得回去了。 EA 的聲音格式已經解開,而且有一支純 Python、零相依的腳本可以 把聲音匯出成 WAV、也把 WAV 編回遊戲的格式 —— 不需要任何二十年前流出的工具。
解碼對照第三方工具驗過 21,678,328 個取樣 0 個不同, 編碼來回 98.1 dB。 完整做法見 換掉遊戲的聲音。
⚠️ 本站曾經寫過「換播報語音做不到」——那句話是錯的,已經訂正。 後來收窄成「做不到的只是最後一格(把聲音編碼回去)」—— 而那一格現在也有了。
仍然做不到的:有些段連第三方工具也解不開(容器層還有分支), 本工具遇到會明說解不出來、不會吐垃圾。
想弄懂為什麼
- 拆開一個語音檔 —— 完整版
- 播報員為什麼不唸新球員的名字
- 語音檔頭的 16 個位元組
- 換掉遊戲的聲音 —— 本站自己寫的編碼器
- 二十年工具清冊 —— 當年社群靠哪些工具做這件事