2026年9月19日 星期六

從菓葉菜宅到健康餐桌:用 iVoice 與 FFmpeg 製作台語故事音檔

從菓葉菜宅到健康餐桌:用 iVoice 與 FFmpeg 製作台語故事音檔

讓菓葉人的菜宅、漁獲與惜物精神,透過台語聲音走進地中海健康餐盤



菓葉迎日・海味地中海餐盤:一半蔬菜海藻、四分之一全穀雜糧、四分之一海鮮蛋白。

這次的實作,是為「115年臺南澎湖農村綠色照顧四面向行動方案」製作一段具有地方感的台語故事音檔。主題從澎湖菓葉社區的菜宅出發,經過漁港與惜食記憶,最後連結到適合長輩的地中海健康餐盤。

語音合成採用意傳科技 iVoice 台語語音合成 API,沒有使用 Runway。原因很單純:這次需要的是能處理臺灣台語與台羅拼音的專用語音引擎,而不是一般影音生成服務。實作結果也再次說明,地方故事的自然度不只取決於聲音模型,更取決於文稿中的用詞、語尾、停頓與生活細節。

完成規格
  • 語音引擎:iVoice 台語語音合成 API
  • 聲音:男聲
  • 腔口:強勢腔(偏高雄腔)
  • 內容:菓葉菜宅、漁獲、惜物精神與地中海餐盤
  • 後製:去除頭尾靜音、調整音量與語速
  • 長度:約 4 分 46 秒
  • 格式:MP3、44.1 kHz、單聲道、192 kbps

一、先寫出「菓葉人的話」,再交給語音引擎

若只把一般中文文章直接送進語音合成,聲音即使發音正確,也容易像在朗讀新聞,缺少社區長輩的生活感。因此,第一步不是調整模型參數,而是先把文稿改成適合「說」的台語故事。

文稿設計掌握三個原則:

  1. 用地方生活做主角:以玄武岩石牆、菜宅、菓葉漁港、魚、小管及拇指管形成故事場景。
  2. 用惜物精神串起情節:一瓢水要省著用、菜葉有蟲孔仍可食、魚肉做菜、魚骨熬湯,呈現菓葉人的辛勤與節省。
  3. 把健康知識轉成生活語言:不直接堆疊營養名詞,而是從「以前菜宅有什麼就煮什麼,漁船捕到什麼就吃什麼」帶出地中海飲食。
土地生出來的物件,攏是辛苦換來的,毋通浪費。

若希望更接近菓葉阿婆的海口語氣,可以適度加入「阮、海跤、袂使糟蹋、毋通討債」等詞彙,並把長句拆短。這種調整通常比只在提示詞寫上「澎湖口音」更有效。

二、iVoice 台語語音合成流程

本次採用兩階段處理。先將台文轉為帶數字聲調的台羅拼音,再將台羅拼音交給台語語音合成端點輸出 WAV。

台文轉台羅/html_taigi_tw_py?text0=台文內容
台語語音合成/synthesize_TLPA?text1=台羅拼音&gender=男聲&accent=強勢腔(高雄腔)
服務端點tts001.ivoice.tw:8804
原始輸出WAV、22.05 kHz、16-bit、單聲道
使用提醒:API 參數、可用腔口與服務政策可能調整,正式應用前應再次確認服務介面與授權規範。包含中文、括號與台羅拼音的查詢參數,必須進行 URL 編碼。

為什麼要分段合成?

四至五分鐘的故事若一次送入,可能遇到逾時、截斷或重做成本過高的問題。因此,我將故事依情節切成九段,逐段轉換台羅、逐段合成 WAV,確認每段有效後再串接。這樣即使其中一段失敗,也只需重新處理該段。

台語故事稿
  ↓ 依情節切成短段落
台文轉台羅拼音
  ↓
iVoice 逐段合成 WAV
  ↓
去除每段頭尾靜音
  ↓
串接、音量正規化、語速調整
  ↓
輸出 MP3

三、用 FFmpeg 整理停頓、音量與語速

語音引擎輸出的 WAV 可以直接播放,但若要用在成果展、點讀設備或故事機,仍需整理頭尾空白、段落音量與播放速度。

1. 只移除頭尾靜音,不破壞句中停頓

第一次測試時,我把靜音移除條件設得過度積極,結果句子中原本自然的停頓也被判定為切點,將接近五分鐘的音檔錯誤縮短成約十一秒。修正方式是:先修剪開頭,再將音訊反轉、修剪反轉後的開頭,最後再反轉回來。如此便能只處理原始音訊的頭尾。

ffmpeg -i input.wav \
  -af "silenceremove=start_periods=1:start_duration=0.08:start_threshold=-45dB,\
areverse,\
silenceremove=start_periods=1:start_duration=0.08:start_threshold=-45dB,\
areverse,apad=pad_dur=0.32" \
  output_clean.wav

apad=pad_dur=0.32 會在段落尾端保留約 0.32 秒空白,使九段串接後仍有呼吸感,不會像連珠炮。

2. 串接、音量正規化與 MP3 輸出

ffmpeg -f concat -safe 0 -i concat.txt \
  -af "loudnorm=I=-18:LRA=7:TP=-1.5,atempo=1.04" \
  -ar 44100 -ac 1 -b:a 192k \
  guoye_taigi_story.mp3
  • loudnorm:統一各段的響度,避免忽大忽小。
  • atempo=1.04:在不明顯改變聲音質感的前提下,略微調整速度。
  • -ar 44100:輸出取樣率設定為 44.1 kHz。
  • -ac 1:旁白採單聲道,適合展示與點讀應用。
  • -b:a 192k:MP3 位元率設定為 192 kbps。

四、一只餐盤,裝著菓葉人的日子

從菓葉菜宅、漁港到地中海健康餐桌

我是在菓葉長大的阿婆。

細漢的時陣,天才微微光,厝裡的大人就已經起床。阿母帶我走進玄武岩石牆圍起來的菜宅,看看番薯、高麗菜、絲瓜和番茄。菓葉的海風強,土地又乾,種菜並不簡單。石牆替菜苗擋風,每一瓢水都要用得有打算;菜葉若有蟲孔,只要還能食,就不會隨便丟掉。

大人常講:「土地生出來的物件,攏是辛苦換來的,毋通浪費。」

太陽升起後,漁船慢慢駛回菓葉漁港。魚、小管和拇指管一籃一籃搬上岸,漁網上還留著鹹鹹的海水味。賣相好的送去市場,較小尾或外形不完整的,就帶回家煮湯、汆燙、曝乾。魚肉做菜,魚骨熬湯,能利用的都留下來。那個年代大家生活不富裕,卻很懂得珍惜土地與海洋給我們的每一份食物。

以前我們不知道什麼叫「地中海飲食」,只知道菜宅有什麼就煮什麼,漁船捕到什麼就吃什麼;多吃菜、海菜、番薯和魚,少放一點鹽,也很少大魚大肉。

後來,社區的青年和老師回到菓葉,和長輩一起把老一輩的飲食智慧重新整理。他們將餐盤分成三個部分:一半放菜宅蔬菜和澎湖海菜;四分之一放番薯、玉米和糙米;另外四分之一放當季鮮魚、小管或拇指管,再加一點花生和苦茶油。

我們看了都笑著說:「這不就是菓葉人以前吃的飯菜嗎?」

不一樣的是,現在我們把傳統經驗變成清楚的健康餐盤。海菜先洗去鹽分,蔬菜煮得柔軟,小管切成長輩容易入口的小塊;利用檸檬、番茄和蒜頭增加香氣,減少鹽和加工醬料。老味道沒有消失,反而用新的方法變得更健康、更適合長輩。

這一盤「菓葉迎日・海味地中海餐盤」,裝的不只是蔬菜、番薯和漁獲。它裝著菓葉人迎著海風耕作的辛勤、珍惜每一份食物的節省,也裝著年輕人與長輩共同創新的心意。

從菜宅走到漁港,再從漁港走上健康餐桌,菓葉人把過去的生活智慧,變成照顧現在、也能傳給未來的一頓好飯。

五、這次實作帶來的三個體會

  1. 地方感先寫進文稿,不能只靠聲音模型。iVoice 的強勢腔偏高雄腔,並非真正的澎湖真人口音;菓葉的海口感主要來自生活詞彙、語尾與敘事節奏。
  2. 長文要分段,停頓要刻意保留。技術上的「去靜音」不等於把所有安靜處刪除。對長輩故事而言,呼吸與停頓也是內容的一部分。
  3. AI 的價值是協助地方知識轉譯。這份音檔不是要取代社區長輩,而是先建立可展示、可點讀、可再修改的素材,讓長輩、青年與教師能一起確認內容。

結語:讓科技替地方記憶多留一條路

從菓葉菜宅、漁獲到地中海餐盤,表面上是一段飲食故事,背後其實連結了地方農漁業、長輩記憶、健康促進、台語傳承與青銀共創。透過台語語音合成與簡單的音訊後製,我們可以把文字變成能在成果展播放、能放入故事機,也能搭配 Tale-Map 或 OID 點讀圖卡使用的聲音素材。

科技不一定要把地方變成另一個樣子。更有意義的做法,是讓科技聽懂地方、說出地方,也讓菓葉人的生活智慧被更多人聽見。

標籤:台語語音合成、iVoice、FFmpeg、澎湖菓葉、農村綠色照顧、地中海飲食、地方創生、AI教育、青銀共創

沒有留言:

張貼留言