Android · iPhone · Garmin / COROS · 繁體中文語音 · 跑步時在你耳邊的那個人
Race engineer on the radio

車手不自己看數據。
你也不用。

賽車隊裡,車手只負責開。牆邊有一個工程師盯著遙測、賽道和天氣,把策略算出來, 然後用無線電丟兩句話進他的耳朵——不是唸數字,是「現在該做什麼」。

Pace4Me 把這件事搬到馬拉松上。手機在腰包裡讀 GPS、心率帶、坡度、風和你去年的成績, 手機上的規則決定什麼時候該開口, 教練決定要說什麼, 用中文直接講進你的骨傳導耳機。你只要跑。

1Hz
遙測取樣
2句
一趟最多開口
5條
內建賽道+自己加
1條
永久分享連結
Pace4Me 跑步畫面:訓練模式、目前配速 5:36、今天不追配速,課表列顯示「熱身 10 分・剩 7:11・這趟 5:30」,下方是距離心率時間、水站與坡度與順風、賽道圖與海拔剖面

跑步畫面,正在執行今天從 Garmin 讀回來的課表(熱身那一段)。頂端那排小字是遙測狀態:GPS ±5 公尺、心率、正在說話、喚醒詞待命。 這一張是用臺北馬賽道重播的模擬跑(10×),畫面上的「模擬 10×」就是在說這件事,不是一場真的比賽。

The pit wall

一個工程師在做的四件事

手機上的規則決定什麼時候開口,語言模型只負責說什麼。

01 · TELEMETRY

讀

GPS、心率帶、坡度、風、你過去的成績,全部在手機上。

手機 · 前景服務
02 · STRATEGY

判斷

規則決定該不該開口。安靜是預設值。

規則引擎 · 離線可用
03 · RADIO

說

規則決定開口後,教練用一兩句中文說。沒網路時改用手機內建語音。

即時語音 · 離線備援
04 · TALK BACK

回話

耳機長按、喚醒詞或按住說話,都能直接問。

耳機 · 喚醒詞 · 按住說話

無線電紀律

一趟間歇只有兩個開口的時機——起跑前和結束時;一趟 12 秒的坡衝刺,中途永遠不會被打斷。

(頁面上的引號句是示範說法,不是逐字稿。)

Race or practice

今天不是比賽,就不要當成比賽

出門前先選今天是賽事還是訓練,教練的語氣和能說的東西跟著換。

Race

賽事

  • ·賽事名稱、預定距離、目標完賽時間
  • ·比賽階段:前 10K 穩住、25–32K 留意心率漂移、最後 5K 切換鼓勵模式
  • ·完賽預測會一直更新,也會告訴你目標還在不在
  • ·影子跑者、路段個人最佳、補給站與折返提前預告
Training

訓練

  • ·沒有賽事名稱,也沒有預定距離:跑到你想停就停
  • ·不講終點、不講剩幾公里、不講完賽預測——這些欄位是空的,教練也不准自己算一個
  • ·沒設今天的目標配速,教練就絕對不會說你「慢了」,改講力氣、心率、坡和風
  • ·出發前可以寫一句「今天想做什麼」,教練照它帶跑
設定畫面:「今天怎麼跑」卡片有訓練與賽事兩個選項,目前選的是訓練;下方「今天的訓練」卡片有可留空的今天的目標配速,以及寫著今天課表的「今天想做什麼」欄位

目標配速可以留空——留空就不追配速,教練只看力氣、地形和風。

Today's session

今天的課表,它會陪你跑完

讀回 Garmin 或 COROS 行事曆裡今天的課表,逐段執行:報趟數、換目標、報成績。

今天的課表卡片:已選「P2W2 Tue AM - Easy 45min + 8×12s 坡衝刺,熱身 10 分 + 30 分 + 1 分 + 8×12 秒 + 收操 5 分,約 57 分 36 秒」;下面是同一天的游泳課表,標示「非跑步課表,無法帶跑」;最後一個選項是「今天不跟課表」

二十個步驟折回成一句,教練會說「8 趟」,不會唸清單。游泳課表讀得到,但不會拿去帶跑。

跑步畫面上的課表列:這一段是「1 分」,剩 0:53,這趟顯示 --:--;上方一行是「等於平路 5:39」

跑步時的課表列。「這趟 --:--」是這一段才剛開始、GPS 還量不出來:寧可留白,也不給不準的數字。

Boundaries only

只在交界講話

一趟最喘的時候不說話,只在開始前和結束時各說一次,而且結束那句已包含下一趟。

「這趟 4 分 08,就在目標裡。下一趟保持。」

Silence rules

什麼情況不打擾

太短的段落不報距離、不催配速,短的一趟不會被打斷。

讀不懂的段落,就沒有目標

課表裡讀不懂的段落,就沒有配速目標,不會編一個。

Your watch

Garmin 或 COROS,戴哪一支都行

連結哪一支,狀態、課表和過去的跑步就從那一支讀,隨時可切換。Android 和 iPhone 一樣。

Garmin

今日狀態、課表、往年比賽

睡眠、HRV、身體能量、VO2max、今天的課表;往年比賽可以變成影子跑者。

帳號密碼直接從手機送給 Garmin,不經過 Pace4Me 的伺服器。

COROS

今日狀態、課表、過去的跑步

訓練負荷、HRV、今天的課表;過去的跑步可以設成影子跑者。

手機直接向 COROS 讀取,伺服器看不到你的帳號。

「紀錄」頁把手錶過去一年的跑步和騎乘分成兩張卡,每頁 10 筆,可以搜尋名稱、地點或日期;COROS 的心率區間也讀得到。

沒有手錶也能跑

只用手機的 GPS 和心率帶就能開始,少的只是手錶資料。

Track model

他看得到你前面那段路

同樣的配速,上坡逆風和下坡順風差很多。教練先看前面的路,再給建議。Android 和 iPhone 一樣。

Gradient

坡、折返、補給站

內建五條賽道:臺北馬、渣打臺北公益馬、長榮航空城市觀光馬、田中馬、新竹城市馬,在課表頁的「路線」下拉選。坡和折返提前預告;補給站目前只有臺北馬,其他四條確認官方路線圖後補上。

Wind

對著你的風

氣溫、體感、濕度,以及投影到你行進方向的逆風分量。沒載入賽道也有風。

Equivalent pace

等效配速

把坡度和風換算掉之後,同樣力氣在平路無風的配速:4:35 爬 3% 的坡,是 4:12 的力氣。

自己的賽道,自己加

「路線」下拉選單最下面的「新增路線…」:選一個路線檔(賽事官網、Garmin Connect、Strava 都能匯出 GPX),或用手錶上跑過的一趟; 在 LINE、檔案或瀏覽器點路線檔,也能直接用 Pace4Me 開啟。填上名稱、官方距離和水站在幾公里(例如 5、7.5、10), 爬坡和折返會自動找出來。自己加的路線只存在這支手機上。

路線卡片:臺北馬拉松 2025 的路線圖與海拔剖面,標示爬坡 3 段、折返 3 處、水站 15 個,官方距離 42.195 公里、累積爬升 87 公尺

賽前:賽道爬坡、折返與補給站,海拔剖面一眼看完。

影子跑者卡片:可選「無」或一場已錄下的 9.4 公里跑步當影子,另有匯入 GPX 與從 Garmin 匯入兩個按鈕,底下寫著 GPX 只存在這支手機

賽前:對手往年比賽可從 Garmin 匯入,GPX 只存在手機裡。

今日狀態卡片:睡眠 77 分 6.2 小時、昨晚 HRV 65 ms、身體能量 53、靜止心率 45 bpm、VO2max 60,以及 Garmin 全馬預測 3:09:28

賽前:狀態睡眠、HRV、身體能量會交給教練,沒睡好前段就保守。

Delta

和去年的自己比賽

匯入一場過去的比賽,全程有「影子跑者」告訴你領先或落後幾秒;有名字的路段結束時跟你的最佳成績比一次。騎車也有影子車手:在「紀錄」的手錶騎乘紀錄選一趟,同一條路線每 5 公里告訴你快或慢幾秒。

Ghost

領先不一定是好消息

影子帶著當時的心率,教練分得出「狀況好」和「衝太快」。比去年慢,它不會責備你。

「你現在比去年快了大約 35 秒,這在起跑段有點太快了。心率跟去年差不多,先收一點。」

Segments

有名字的路段

進入路段給一句戰術提醒,出來報成績,破個人最佳只慶祝一句。

Radio

喊一聲,就有人回答

手機鎖著、塞在腰包裡,一樣問得到。三條路:

Long press · Android

耳機長按

Pace4Me 註冊成系統數位助理,接住長按那一下:不亮螢幕、不用解鎖、音樂繼續放。

Wake word · Android

喊「嗨教練」

辨識完全在手機上,聲音不離開手機。

Push to talk · Android · iPhone

按住說話

畫面上一個大按鈕,按住問,放開聽。可以打斷正在說話的教練。

Cycling

騎車:用功率帶你,不是配速

在「今天怎麼跑」選自行車,教練就換成看功率:30 秒功率、NP、IF、迴轉、心率和做功, 再加上 W′ 無氧儲備。設了 FTP 和目標強度,它才會講目標瓦數;沒設,它只報數字,不替你猜一個。

Android 和 iPhone 都能騎:標準藍牙功率計(踏板、曲柄、蜘蛛,例如 Magene P515)直接配對;每 10 分鐘報一次功率、途中查天氣、 可以暫停;問教練「現在幾瓦」會回答當下的數字。開始前如果心率帶或功率計沒連上,會先問你要不要配對。

騎車模式的今天的課表卡:已選「P2W2 Fri - HEAT BRICK #1 騎 90min Z2,熱身 10 分 + 70 分 + 收操 10 分,約 90 分」;同一天的跑步課表標示「非騎車課表,無法帶騎」;最後一個選項是「今天不跟課表」

Garmin、COROS 的自行車課表也能帶;跑步課表會標示「非騎車課表,無法帶騎」。

自行車模擬騎乘畫面:30 秒功率 174 W,目標 123 W、高出 34 W;NP 176、IF 0.70、迴轉 89、心率 140;時間 0:17:28、距離 8.82 公里;W′ 無氧儲備 100%;教練說「功率太高了。現在平均 167 瓦,目標是 123 瓦,請立刻收回來」

模擬騎乘(30 倍速),不是真的在騎。目標功率來自課表當下這一段。

Headset

耳機:用按鍵叫教練,最順手

手機留在腰包、不用解鎖、不用看螢幕。喚醒詞在風聲和喘氣聲裡較不靈敏。

Android · Shokz

把「長按=語音助理」交給 Pace4Me

1. 耳機配對好;在 Shokz App 把想用的鍵設成「語音助理」。
2. Pace4Me →「更多」→「耳機長按叫教練」→ 選 Pace4Me。
3. 跑步中長按,聽到提示音就直接問。

選了之後全系統的數位助理都換成 Pace4Me,可隨時在系統設定改回,也可開「只在跑步中接手」。

Other headsets

其他耳機:要有「叫語音助理」的按鍵

任何能長按叫出語音助理的藍牙耳機都可以,做法相同。沒有這個鍵的話,用喚醒詞或「按住說話」。

iPhone:按一下耳機的播放鍵

iOS 不讓 App 取代 Siri,所以長按還是 Siri。改用單按播放/暫停鍵: 「更多」→「耳機按鍵叫教練」打開後,開跑時會聽到三聲提示音,代表按鍵交給 Pace4Me 了。按一下、聽到上升音就說, 說完停一下就會自動送出(聽到下降音)。跑步期間其他 App 的音樂會暫停。

Debrief

跑完之後,整場都留著

每公里分段、一趟一趟的結果、完整的教練對話,都可以往回翻。

Splits

每公里分段

每公里的配速、心率和跟目標差幾秒;不足一公里照實標成不完整。

Reps

一趟一趟的結果

課表逐段列出配速、心率和跟目標的差距;量不出來的寫「太短,無法測量」。

Transcript

完整的教練對話

每一句都標著公里數和觸發原因。

跑後紀錄的每公里分段:3K 5:02、4K 5:08、5K 4:55、6K 4:52、7K 4:55、8K 5:43、9K 12:06、最後不足一公里的 9.42K 2:58,右側是每一公里的平均心率

每公里分段。橘色那一公里是八趟坡衝刺加走回起點;最後 0.42 公里標成 9.42K。

跑後紀錄的教練對話,共 58 則:0.00K 教練說「熱身,10 分。」;0.02K 教練提醒手機麥克風幾乎收不到聲音;0.40K 系統事件〔耳機長按〕;0.44K 跑者問「現在的速度多少?」;0.45K 教練回答每公里 6 分 23 秒、心率 111

同一趟的對話共 58 則。第二則是教練承認麥克風被腰包蓋住、聽不到。

Timing screen

即時分享:一條連結,發一次就好

朋友不用登入、不用裝 App。連結固定,發一次就好;沒在跑時只顯示「目前沒有在跑步」。

LiveTrack 已經做好地圖;這裡補的是它沒有的:跑到第幾趟、目標對實際、跟影子差幾秒,還有(如果你願意)教練說了什麼。

即時分享設定卡:「讓朋友看你跑步」開關、固定連結(分享代碼已隱藏)、複製與分享按鈕、換一條新連結,以及三個可見範圍選項與「只顯示大概位置」開關

設定畫面。代碼已遮蓋——它等於鑰匙。

即時分享的觀看頁:即時更新中、路線地圖、距離與配速與心率與目標配速、今天的課表「第 2 趟 / 5 · 1K」與目標實際差距和影子跑者、以及教練說的話五則

朋友看到的頁面。示範畫面,用測試資料產生。

01

只看路線

路線、距離、配速、心率。

02

路線 + 今天的課表

加上第幾趟、目標配速、跟影子差幾秒。

03

連教練說的話一起

加上教練說的每一句。每一趟要自己再打開一次。

By construction

你說的話沒有欄位可以放

傳出去的資料裡沒有你說的話的欄位,「我肚子怪怪的」不會出現在那一頁。

Honest staleness

「2 分鐘前」

顯示的是手機最後送出的數值和時間,不往前推算,斷線時看起來也不會像出事。

Battery

整場只開一條連線

耗電大戶是行動網路本身,所以整場只開一條連線,約每 12 秒送一批,斷線時排隊補送。

Your own key

AI 語音教練:用你自己的 OpenAI 金鑰

填上自己的金鑰,教練就用你的 OpenAI 帳戶說話、費用由你負擔。金鑰只存在手機裡,直接連 OpenAI。沒有金鑰一樣能跑,只是教練只說離線的固定句子。

  1. 登入 OpenAI 開發者平台:打開 platform.openai.com, 用 Google、Apple 或 email 登入(沒有帳號就註冊一個)。這個帳號跟 ChatGPT 訂閱是分開計費的。
  2. 先儲值:到 Settings → Billing,加入付款方式並儲值一筆金額。即時語音按用量計費,帳戶沒有餘額時金鑰無法使用。 建議順便到 Limits 設一個每月預算上限,就不會有意外的帳單。
  3. 建立金鑰:到 API keys 頁面, 按 Create new secret key,名稱填 Pace4Me,其他維持預設,按 Create。
  4. 馬上複製:畫面上會出現一串 sk- 開頭的金鑰。它只會顯示這一次,關掉就看不到了,請立刻複製。
  5. 貼到 Pace4Me:打開 App →「更多」→「AI 語音教練:你的 OpenAI 金鑰」,貼上。開始跑步後, 按「測試」確認金鑰能用:它會真的連一次 OpenAI,告訴你是可以用、金鑰不對、沒有額度還是被限流。開始跑步後, 跑步畫面右上角的語音狀態顯示「AI」,就是連上了。

金鑰就是你的錢包

不要把金鑰貼到群組或公開的地方。外流的話,到 API keys 刪掉那一把,再建新的。

Get it

下載測試版

Pace4Me 還在測試中。試用之後有任何問題或建議,都很歡迎告訴我們:iPhone 在 TestFlight 的 Pace4Me 頁面按「傳送意見」(可以附上截圖);Android 請直接告訴邀請你的人。

iPhone

用 TestFlight 安裝

1. 在 App Store 安裝 Apple 官方的 TestFlight。
2. 用 iPhone 點下面的按鈕,按「接受」,再按「安裝」。
需要 iOS 17 以上。之後有新版本,TestFlight 會通知你更新。

加入 iPhone 測試
Android

用 Firebase App Tester 安裝

1. 用 Android 手機點下面的按鈕,填你的 email,加入測試。
2. 收到 Firebase 的邀請信後按「開始使用」,照指示安裝 App Tester,再從 App Tester 安裝 Pace4Me。
3. 手機若問「允許安裝不明來源的應用程式」,請允許 App Tester(找不到的話,在設定裡搜尋「不明」)。
需要 Android 10 以上。之後有新版本,App Tester 會通知你更新。

加入 Android 測試
Honesty

不知道的時候就說不知道

會編數字的工程師比沒有更糟。以下幾條寫進了程式和教練指令。

太短,無法測量

12 秒的坡衝刺,GPS 量不出來

一場 8 趟 12 秒的坡衝刺裡,有兩趟被記成 0 公尺和 5.6 公尺,換算成 17:04 的配速。GPS 在 12 秒內解析不出這段距離。

所以這種段落不給配速,該出現的那一格寫「太短,無法測量」,教練改講力氣、動作、呼吸。

不跟你吵

你說數字不對的時候

手機 GPS 會偏,段落越短越不準,錯的常常是我們。

教練承認不一樣、說一次自己看到的、然後把你帶回跑步;不吵、不替你的手錶編理由。你堅持你的數字,就照你的數字帶。

「好,我這邊顯示每公里 5 分 35,可能有誤差。我們以你的感覺為準,維持現在的力氣。」

跑後紀錄裡的一則教練對話,發生在 8.49 公里,觸發原因 WORKOUT_STEP_START:「第 8 趟 12 秒衝刺開始。全力上坡,步頻快,身體微前傾,手臂放鬆。時間很短,穩穩發力就好。」

第 8 趟衝刺開始時教練說的話:沒有配速、沒有目標區間,因為那些數字不存在。

還有幾條

趟數不自己數。一律照資料裡的欄位,不累加、不估。

資料裡沒有的課表內容不講。

目標不可能時不假裝。要改目標,得你自己開口。

安全高於一切。心率過高就放慢或走路,不做醫療診斷。