Spaces:
Running
Running
|
Download docs/TTS_ROUTE_GUIDANCE_VALIDATION.md from tkadkghdlf/CD: direct link, hf CLI and curl.
- Browser
- Download file 5.95 kB
-
https://huggingface.co/spaces/tkadkghdlf/CD/resolve/main/docs/TTS_ROUTE_GUIDANCE_VALIDATION.md
- Command line
-
hf download hf://spaces/tkadkghdlf/CD/docs/TTS_ROUTE_GUIDANCE_VALIDATION.md
-
curl -L -o TTS_ROUTE_GUIDANCE_VALIDATION.md https://huggingface.co/spaces/tkadkghdlf/CD/resolve/main/docs/TTS_ROUTE_GUIDANCE_VALIDATION.md
5.95 kB
| # TTS ๊ธฐ๋ฅ ๋ฐ ๊ฒฝ๋ก ์๋ด ๊ฒ์ฆ ๊ธฐ์ค | |
| ## 1. ์ ๊ณต TTS์ ์ถ๋ ฅ ๊ธฐ์ค | |
| ๋ชจ๋ ๋ฌ๋ ์์ฑ์ ์น ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ์์ฑ์ด ์๋ `myshell-ai/MeloTTS-Korean`์ WAV ์๋ต์ ์ฌ์ฉํ๋ค. ํ๋ฐํธ์๋๋ `POST /api/v1/ai/tts/korean`์ `{ "text": "...", "speed": 1.5 }`๋ฅผ ์์ฒญํ๊ณ , ์๋ต์ Object URL๋ก ์บ์ํ ๋ค ํ๋์ ์ฌ์ ๋๊ธฐ์ด์์ ์์๋๋ก ์ฌ์ํ๋ค. ๋ชจ๋ธ ์ค๋ฅ ์ ํด๋น ์๋ด๋ง ๊ฑด๋๋ฐ๋ฉฐ OS TTS๋ก ๋์ฒดํ์ง ์๋๋ค. | |
| | ๊ธฐ๋ฅ | ์ถ๋ ฅ ๊ธฐ์ค | ์์ฑ ํ ์คํธ | | |
| | --- | --- | --- | | |
| | ๊ฒฝ๋ก ๊ฐ๋ฆผ๊ธธ ์๋ด | ์์ฑ๋ OSM ๋๋ก ๊ทธ๋ํ์์ ์ง์ ๋ฐฉํฅ์ ์ ์ธํ ์ ํ์ง๊ฐ 2๊ฐ ์ด์์ด๊ณ , ์ ํ ๊ฒฝ๋ก๊ฐ ์ข/์ฐ๋ก 30~150๋ ๊บพ์ด๋ ์ง์ ๋ง ๋ฑ๋กํ๋ค. ์ ํ ๊ฒฝ๋ก์์ 250m ์ด๋ด์ ๋ค์ด์ค๋ฉด WAV๋ฅผ ๋ฏธ๋ฆฌ ์ค๋นํ๊ณ , GPS๊ฐ ๊ฒฝ๋ก์์ 45m ์ด๋ด์ด๋ฉฐ ํด๋น ์ง์ 65m ์ ~12m ์ง๋ ๋ฒ์์ ์์ ๋ 1ํ ์๋ดํ๋ค. 60m ์ด๋ด์ ์ฐ์๋ ๋ถ๊ธฐ์ ์ ์ค๋ณต ๋ฑ๋กํ์ง ์๋๋ค. | `์ ์ ํ ๊ฐ๋ฆผ๊ธธ์์ ์ขํ์ ํ์ธ์.` ๋๋ `์ ์ ํ ๊ฐ๋ฆผ๊ธธ์์ ์ฐํ์ ํ์ธ์.` | | |
| | ์ค์๊ฐ ์ผ์ ์ฝ์นญ | ์์น `live-state`๋ฅผ 5์ด๋ง๋ค ์ฝ๋๋ค. ๊ฐ์ ํญ๋ชฉ์ 120์ด, ๋ค๋ฅธ ํญ๋ชฉ์ 90์ด ์ฌ์๋ดํ์ง ์๋๋ค. ์ฌ๋ฐ ์์น โ ์ผ์ด๋์ค โ ์ข์ฐ ๋น๋์นญ โ ์ ์ง ์๊ฐ โ ์ํ ์์ง์ ์์๋ค. | ์๋ ์ผ์ ์ฝ์นญ ๋ฌธ๊ตฌ ์ฐธ์กฐ | | |
| | 1km ์๋ฃ | ์ค์ /์๋ฎฌ๋ ์ด์ ์ด๋ ๊ฑฐ๋ฆฌ๋ก ์ ์ ์ km๋ฅผ ๋์ ๋ ๊ฐ km๋ง๋ค 1ํ. | `{n}ํฌ๋ก๋ฏธํฐ๋ฅผ ์๋ฃํ์ด์. ๊ฑธ๋ฆฐ ์๊ฐ์ {์๊ฐ}, ํ๊ท ์๋๋ {์๋}์ ๋๋ค.` | | |
| | ์ ๋ฐ | ์ ํ ์ฝ์ค ๋ชฉํ ๊ฑฐ๋ฆฌ์ 50%๋ฅผ ์ฒ์ ๋์ ๋ 1ํ. | `์ ๋ฐ ์ง์ ์ ๋๋ฌํ์ด์! ์ง๊ธ์ฒ๋ผ๋ง ์ ์งํด์ ๋๊น์ง ์ด์ด๊ฐ๋ณด์ธ์!` | | |
| | ๋ชฉํ 500m ์ | ๋ชฉํ ๊ฑฐ๋ฆฌ๊ฐ 0.5km๋ณด๋ค ๊ธธ๊ณ `๋ชฉํ - 0.5km`๋ฅผ ์ฒ์ ๋์ ๋ 1ํ. | `๋ชฉํ์น์ ๊ฑฐ์ ๋ค ๋๋ฌํ์ด์! ์กฐ๊ธ๋ง ๋ ํ๋ด์ธ์!` | | |
| | ๋ชฉํ ๋ฌ์ฑ | ์ ํ ์ฝ์ค ๋ชฉํ ๊ฑฐ๋ฆฌ๋ฅผ ์ฒ์ ๋์ ๋ 1ํ. | `์ถํ๋๋ฆฝ๋๋ค! ๋ชฉํ๋ฅผ ๋ฌ์ฑํ์ด์! ์ด ๊ฑฐ๋ฆฌ {๊ฑฐ๋ฆฌ}, ๊ฑธ๋ฆฐ ์๊ฐ์ {์๊ฐ}, ํ๊ท ์๋๋ {์๋}์ ๋๋ค.` | | |
| ์ผ์ ์ฝ์นญ ๋ฌธ๊ตฌ๋ ๋ค์๊ณผ ๊ฐ๋ค. | |
| - ํ์ฌ ์ฌ๋ฐ์ด ํ๊ท ๋ณด๋ค 12bpm ์ด์ ๋๊ณ ํ๊ท ์ด 120bpm ์ด์: `ํ์ฌ ์ฌ๋ฐ์ด ์ด๋ฒ ๋ฌ๋ ํ๊ท ๋ณด๋ค ์ฌ๋ผ๊ฐ์ด์. ๋ณดํญ์ ์กฐ๊ธ ์ค์ด๊ณ ํธํ ํธํก์ผ๋ก ์๋๋ฅผ ์กฐ์ ํด ๋ณด์ธ์.` | |
| - ํ๊ท ์ผ์ด๋์ค๊ฐ 150spm ๋ฏธ๋ง: `๋ฌ๋ ๋ฆฌ๋ฌ์ด ๋๋ ค์ก์ด์. ๋ณดํญ์ ๋ฌด๋ฆฌํ๊ฒ ๋๋ฆฌ์ง ๋ง๊ณ ๋ฐ์ ์งง๊ณ ๊ฐ๋ณ๊ฒ ์ฎ๊ฒจ ๋ณด์ธ์.` | |
| - ์ข์ฐ ๋น๋์นญ์ด 8% ์ด์: `์ข์ฐ ๋ฆฌ๋ฌ์ด ํ์ชฝ์ผ๋ก ์น์ฐ์ณ ๊ธฐ๋ก๋๊ณ ์์ด์. ์๋๋ฅผ ์กฐ๊ธ ๋ฎ์ถ๊ณ ๊ท ํ ์๋ ๋ฐ๊ฑธ์์ ํ์ธํด ๋ณด์ธ์.` | |
| - ํ๊ท ์ ์ง ์๊ฐ์ด 310ms ์ด์: `๋ฐ์ด ์ง๋ฉด์ ๋จธ๋ฌด๋ ์๊ฐ์ด ๊ธธ์ด์ก์ด์. ์ง๋ฉด์ ๊ฐ๋ณ๊ฒ ๋ฐ๊ณ ๋ค์ ๋ฐ๋ก ๋์ด๊ฐ ๋ณด์ธ์.` | |
| - ํ๊ท ์ํ ์์ง์์ด 10.5cm ์ด์: `์์๋ ์์ง์์ด ์ปค์ก์ด์. ์์ ์ ์ ๋ฉด์ ๋๊ณ ์์ผ๋ก ๋ถ๋๋ฝ๊ฒ ๋์๊ฐ ๋ณด์ธ์.` | |
| ## 2. ๊ฒฝ๋ก ์์ฑ๋ถํฐ ์ข ๋ฃ๊น์ง์ ๊ฒ์ฆ ์๋๋ฆฌ์ค | |
| 1. `/route-results`์์ 1km ์ด์ ๊ฒฝ๋ก๋ฅผ ์์ฑํ๋ค. ์์ฒญ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ API ๊ฒ์ดํธ์จ์ด์ ๊ณ ์ ์๊ฐ์ผ๋ก ์ทจ์๋์ง ์์์ผ ํ๋ค. | |
| 2. ์์ฑ ์๋ต์ ๊ฐ `routes[].maneuvers`๊ฐ `id`, `point`, `turn`, `branch_count`, `distance_from_start_m`์ ๊ฐ๋์ง ํ์ธํ๋ค. `branch_count`๋ 2 ์ด์์ด์ด์ผ ํ๊ณ `turn`์ `left` ๋๋ `right`์ฌ์ผ ํ๋ค. | |
| 3. ์ถ์ฒ ๊ฒฝ๋ก ์์ธ ํ๋ฉด์์ `๋ฌ๋ฆฌ๊ธฐ ์์`์ ์ ํํ๋ค. ์ ํ ๊ฒฝ๋ก์ `maneuvers`๊ฐ `sessionStorage`์ ํจ๊ป ๋ณด๊ด๋๊ณ , TWA/Wear ์ ๋ฌ payload์๋ ํฌํจ๋๋์ง ํ์ธํ๋ค. | |
| 4. ์ค์ GPS ๋๋ `simulate=1`์ผ๋ก ์ ํ ๊ฒฝ๋ก๋ฅผ ์งํํ๋ค. ์ฒซ ๊ฐ๋ฆผ๊ธธ ์ฝ 65m ์ ์ ํ ๋ฒ๋ง ํด๋น ์ข/์ฐํ์ ์์ฑ์ด ์ฌ์๋๊ณ , ์ง๋๊ฐ ๋ค์๋ ๋ฆ์ ์๋ด๊ฐ ์ฌ์๋์ง ์๋์ง ํ์ธํ๋ค. ๋ค์ ๊ฐ๋ฆผ๊ธธ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ธํ๋ค. | |
| 5. ์์น๊ฐ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ `live-state`๋ฅผ ๋ณด๋ด ์ผ์ ์ฝ์นญ์ ์ฐ์ ์์์ 90/120์ด ์ฌ์๋ด ์ ํ์ ํ์ธํ๋ค. ๊ฒฝ๋ก ์๋ด์ ์ผ์ ์๋ด๊ฐ ๊ฒน์น๋ฉด WAV ์ฌ์ ๋๊ธฐ์ด์์ ์์ฐจ ์ฌ์๋๋์ง ํ์ธํ๋ค. | |
| 6. 1km, ์ ๋ฐ, ๋ชฉํ 500m ์ , ๋ชฉํ ๋ฌ์ฑ ๊ธฐ์ค์ ์ฐจ๋ก๋ก ๋๊ฒจ ๊ฑฐ๋ฆฌ ์๋ด ๋ฌธ๊ตฌ์ ์ค์ ํ์ ๊ฑฐ๋ฆฌ/์๊ฐ์ด ์ผ์นํ๋์ง ํ์ธํ๋ค. | |
| 7. ์ ์ง ๋ฒํผ์ ๊ธธ๊ฒ ๋๋ฌ ์ข ๋ฃํ๋ค. TWA/Wear ์คํ์ ์์น์ `POST /runs` ์ ์ฅ๋ณธ์ ๊ธฐ๋ค๋ฆฌ๊ณ , ๊ฒฐ๊ณผยท์บ๋ฆฐ๋ยท์ค์ ์ด๋ ๊ฒฝ๋ก๊ฐ ๋์ผํ `run_id`๋ก ํ ๋ฒ๋ง ์ ์ฅ๋๋์ง ํ์ธํ๋ค. | |
| ## 3. ํ์ฌ ๊ฒ์ฆ ์ํ | |
| - ํ๋ฐํธ์๋ `npm run build`: ํต๊ณผ. | |
| - ๊ฒฝ๋ก ์๋ด ํ๋จ๊ณผ TTS ํธ์ถ ์ฐ๊ฒฐ: TypeScript ํ๋ก๋์ ๋น๋์์ ํต๊ณผ. | |
| - ๋ก์ปฌ API ๊ฒ์ดํธ์จ์ด ๊ฒฝ๋ก ์์ฑ: `HTTP 200`์ผ๋ก ๊ฒฝ๋ก 2๊ฐ์ `maneuvers` 15๊ฐ๋ฅผ ๋ฐํํ๋ค. ํ๋ณธ์ ๋ชจ๋ ๊ฐ๋ฆผ๊ธธ์ `branch_count` 2 ์ด์, `turn`์ `left` ๋๋ `right`์๋ค. | |
| - MeloTTS: `์ ์ ํ ๊ฐ๋ฆผ๊ธธ์์ ์ฐํ์ ํ์ธ์.` ์์ฒญ์ด `audio/wav`(222,120๋ฐ์ดํธ)๋ก ์ ์ ์๋ตํ๋ค. | |
| - ๋ฐฐํฌ API ๊ฒ์ดํธ์จ์ด ๊ฒฝ๋ก ์์ฑ: `HTTP 200`์ผ๋ก ๊ฒฝ๋ก 1๊ฐ์ ์ข 1ยท์ฐ 2, ์ด 3๊ฐ์ ๊ฐ๋ฆผ๊ธธ์ ๋ฐํํ๋ค. | |
| - ๋ฐฐํฌ MeloTTS: `์ ์ ํ ๊ฐ๋ฆผ๊ธธ์์ ์ขํ์ ํ์ธ์.` ์์ฒญ์ด `audio/wav`(225,192๋ฐ์ดํธ)๋ก ์ ์ ์๋ตํ๋ค. | |
| - ์์น-ํด๋ํฐ Data Layer: Galaxy Watch6 ์ฐ๊ฒฐ, ๋ฌ๋ ์์ ๋ช ๋ น ๋ฐ ์งํ ์ํ ์์ ์ ์ค๊ธฐ๊ธฐ๋ก ํ์ธํ๋ค. | |
| - ์์น ์ข ๋ฃ: ์ ๊ธ์ ์ฐํํ์ง ์๋ ๊ณต์ Data Layer ์ ์ด ๋ฅ๋งํฌ๋ก `stop` ๋ช ๋ น์ ์ ์กํ๋ค. ๋ค๋ง ํด๋ํฐ์ด ๋ณด์ ์ ๊ธ ์ํ๊ฐ ๋์ด ์ข ๋ฃ ํ๋ฉดยท์์ฝ ์ ๋ก๋ ์๋ฃ ACK์ ์ค์ GPS ๊ฐ๋ฆผ๊ธธ์์์ ์คํผ์ปค ์ฒญ์ทจ๋ ์ด ์ธ์ ์์ ํ์ ํ ์ ์์๋ค. ์ด ๋ ํญ๋ชฉ๋ง ๋ค์ ์ ๊ธ ํด์ ์ํ์ ์ค์ธ ๋ฌ๋์์ ์ ์๋๋ฆฌ์ค 4~7๋จ๊ณ๋ก ๋ง๋ฌด๋ฆฌํ๋ค. | |