Mycroft-core: ์ง‘ ์—†์ด ๋งˆ์ดํฌ๋กœํ”„ํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

์— ๋งŒ๋“  2018๋…„ 05์›” 04์ผ  ยท  17์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: MycroftAI/mycroft-core

๋‚ด Google STT API ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋Š” ํ™ˆ(mycroft ๊ณ„์ •) ์—†์ด mycroft๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์„ค๋ช…์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์งง์€ ์„ค๋ช… hele์— ๋”ฐ๋ผ ๊ทธ๊ฒƒ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: https://github.com/MycroftAI/mycroft-core#using-mycroft-without-home .

์–ด๋””์—์„œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋„ค, ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๊ฒƒ๋“ค์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๊ตฌ์„ฑ /home/mycroft/.mycroft/mycroft.conf ์˜ ์ผ๋ถ€ ์ˆ˜์ •

  • ์‚ฌ์šฉ์ž ์ง€์ • Google ํด๋ผ์šฐ๋“œ Speech API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด(์ž์‹ ์˜ ์ž๊ฒฉ ์ฆ๋ช… json ์ž…๋ ฅ):

~json..."stt": {"๋ชจ๋“ˆ": "google_cloud","google_cloud": {"์ž๊ฒฉ ์ฆ๋ช…": {"json": {}}}},...~

  • mycroft mimic ํŒจํ‚ค์ง€ ๋Œ€์‹  google tts๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด:
    ~json..."tts": {"๋ชจ๋“ˆ": "๊ตฌ๊ธ€","Google": {"lang": "en-us","๋Š๋ฆผ": ๊ฑฐ์ง“}},...~

  • mycroft mimic ํŒจํ‚ค์ง€ ๋Œ€์‹  espeak tts๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด:

    • (๋จผ์ € espeak ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค)
      ~json..."tts": {"๋ชจ๋“ˆ": "๋งํ•˜๋‹ค","๋งํ•˜๋‹ค": {"๋ž‘": "์—”"}},...~

๋ชจ๋“  17 ๋Œ“๊ธ€

api.mycroft.ai์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

1) ์ปค์Šคํ…€ google_cloud stt API ํ‚ค๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

2) /home/mycroft/.mycroft/mycroft.conf์— "server.update": false๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋กœ๊ทธ์— ๋‹ค์Œ ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

~14:48:28.473 - requests.packages.urllib3.connectionpool - DEBUG - ๋Š์–ด์ง„ ์—ฐ๊ฒฐ ์žฌ์„ค์ •: api.mycroft.ai14:48:29.084 - requests.packages.urllib3.connectionpool - ๋””๋ฒ„๊ทธ - https://api.mycroft.ai :443 "GET /v1/device HTTP/1.1" 401 3814:48:29.104 - requests.packages.urllib3.connectionpool - DEBUG - ์ƒˆ HTTPS ์—ฐ๊ฒฐ ์‹œ์ž‘(1): api.mycroft.ai14:48:29.645 - requests.packages.urllib3.connectionpool - ๋””๋ฒ„๊ทธ - https://api.mycroft.ai :443 "GET /v1/auth/token HTTP/1.1" 401 38~

์™œ์š”?

๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” mycroft ๋ฌธ์„œ๊ฐ€ ๊ณ ๊ธ‰ ์žฌ์ƒ์„ ์œ„ํ•ด ๋งค์šฐ ๋ถˆ์™„์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • "์ง‘์ด ์—†์–ด๋„ mycroft๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๋˜์–ด ์žˆ์ง€๋งŒ ์˜ˆ์ œ ๊ตฌ์„ฑ์€ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Sadi: "์ž์‹ ์˜ Google API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." ๊ทธ๋Ÿฌ๋‚˜ ์ด์— ๋Œ€ํ•œ ์˜ˆ์ œ ๊ตฌ์„ฑ์€ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ํ”„๋กœ์ ํŠธ์ด๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ ๋ฌธ์„œ๋ฅผ ๊ฐœ์„  ํ•˜์‹ญ์‹œ์˜ค.

์•ˆ๋…•ํ•˜์„ธ์š” @Josca ์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ๋ฌธ์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ

google_cloud stt๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜๋ฉด mycroft์™€ ๋Œ€ํ™”ํ•˜๊ณ  ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ตฌ์„ฑ์—์„œ ํŽ˜์–ด๋ง ๊ธฐ์ˆ  ๋ฐ ๊ตฌ์„ฑ ๊ธฐ์ˆ ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"skills" {
   "blacklisted_skills": ["skill-media", "send_sms", "skill-wolfram-alpha", "skill-pairing", "skill-configuration"]
}

๊ธฐ์ˆ  ์„ค์ •๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์—์„œ mycroft ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์‹คํŒจ๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ์•„์ง ์—…๋ฐ์ดํŠธ ๊ฐ€์น˜๋ฅผ ์กด์ค‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๊ฒƒ๋“ค์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๊ตฌ์„ฑ /home/mycroft/.mycroft/mycroft.conf ์˜ ์ผ๋ถ€ ์ˆ˜์ •

  • ์‚ฌ์šฉ์ž ์ง€์ • Google ํด๋ผ์šฐ๋“œ Speech API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด(์ž์‹ ์˜ ์ž๊ฒฉ ์ฆ๋ช… json ์ž…๋ ฅ):

~json..."stt": {"๋ชจ๋“ˆ": "google_cloud","google_cloud": {"์ž๊ฒฉ ์ฆ๋ช…": {"json": {}}}},...~

  • mycroft mimic ํŒจํ‚ค์ง€ ๋Œ€์‹  google tts๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด:
    ~json..."tts": {"๋ชจ๋“ˆ": "๊ตฌ๊ธ€","Google": {"lang": "en-us","๋Š๋ฆผ": ๊ฑฐ์ง“}},...~

  • mycroft mimic ํŒจํ‚ค์ง€ ๋Œ€์‹  espeak tts๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด:

    • (๋จผ์ € espeak ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค)
      ~json..."tts": {"๋ชจ๋“ˆ": "๋งํ•˜๋‹ค","๋งํ•˜๋‹ค": {"๋ž‘": "์—”"}},...~

ํ•‘ @KathyReid

Google TTS๊ฐ€ ๋กœ์ปฌ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

Google TTS๋Š” ๋กœ์ปฌ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์›๊ฒฉ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์œ„ํ•ด mycroft-servers๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

@YogeshSingla , Google TTS๋Š” ์›๊ฒฉ์ด์ง€๋งŒ ๋ฌด๋ฃŒ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋“ฑ๋ก๋„ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์„œ๋น„์Šค์˜ ์ž‘๋™์ด ๋ณด์žฅ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Python gTTS ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. Google ์ž์ฒด์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ณ  ์ง€์—ญ์ ์ธ ์†”๋ฃจ์…˜์œผ๋กœ espeak๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ’ˆ์งˆ์€ ํฌ์ง€ ์•Š์ง€๋งŒ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € espeak ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
~sudo apt-get ์„ค์น˜ espeak~

๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋Š” Mimic ๋Œ€์‹  ๋กœ์ปฌ tts์— espeak๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ž์œ ๋กœ์šด ์ด์œ ๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๋‹น์‹ ์˜ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ํ™ˆ์„ ํ”ผํ•˜๋Š” ์ด์œ ์— ์œ ์‚ฌํ•˜๊ฒŒ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹น์‹ ์ด ๊ธฐ๊บผ์ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@penrods

Espeak๋Š” Mimic, Google TTS ๋“ฑ์— ๋น„ํ•ด ํ’ˆ์งˆ์ด ์ƒ๋‹นํžˆ ๋‚ฎ์€ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋งŽ์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ชจ๋ฐฉ์€ ๊ธด ๋นŒ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ํŒจํ‚ค์ง€๋กœ Mimic์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. mycroft-core ๋ฅผ ์„ค์ •ํ•  ๋•Œ skip mimic ์˜ต์…˜( bash dev_setup.sh -sm )์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    Espeak๋Š” ํ‘œ์ค€ ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€์ด๋ฏ€๋กœ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ์ด ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

  2. Espeak๋Š” ์ œ ๋ชจ๊ตญ์–ด์ธ ์ฒด์ฝ”์–ด๋ฅผ ํฌํ•จํ•œ ๋งŽ์€ ์–ธ์–ด ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Mimic์˜ ๋ฌธ์„œ ์—์„œ ์ง€์›๋˜๋Š” ์–ธ์–ด ๋ชฉ๋ก์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์˜์–ด์— ๊ฐ•ํ•˜๊ฒŒ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ  ๋•Œ๋ฌธ์—).

  3. Espeak๋Š” ํŠนํžˆ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋งค์šฐ ๋„์›€์ด ๋˜๋Š” ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Mimics๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  4. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๊ฐœ๋ฐœ ๋ชฉ์ ์„ ์œ„ํ•œ ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜์œผ๋กœ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

picotts๋Š” ์œ ์‚ฌํ•˜๊ฒŒ ๋น ๋ฅด์ง€๋งŒ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋” ๋‚˜์€ ์ถœ๋ ฅ ํ’ˆ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ฒด์ฝ”์–ด์— ๋Œ€ํ•ด์„œ๋Š” ๋ชจ๋ฆ…๋‹ˆ๋‹ค) - ํ˜„์žฌ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Mycroft์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ Mycroft๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ์ด ๋งŽ์€ ๋ถ€๋ถ„์„ ๊ฐ€๋Šฅํ•œ ํ•œ "๋กœ์ปฌ"๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ „๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋‹จ์ˆœํ•œ ์žฅ๋‚œ๊ฐ์ด ์•„๋‹Œ ์‹ค์šฉ์ ์ธ ์กฐ์ˆ˜๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ์™„์ „ํ•œ ์˜คํ”„๋ผ์ธ ์šด์˜์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ์ˆ ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ํŒŒํŠธ๋„ˆ์™€ ํ˜‘๋ ฅํ•˜๋ฉด์„œ ์ผ๋ถ€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ทธ ๋™์•ˆ์—๋Š” ์ด์ „ ์„ธ๋Œ€ TTS ์—”์ง„์˜ ์—ด๋“ฑํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ๋ฆฌ์†Œ์Šค์— ์ง‘์ค‘ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด PR์„ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์„ _์ ˆ๋Œ€__ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ต์‹ฌ ํŒ€์€ ์„ฑ๋Šฅ์—์„œ ํ›„ํ‡ดํ•˜๊ณ  ๊ธฐ์ˆ ์ด ์—†๋Š” ๊ธฐ์ˆ ์˜ ๊ณจ๋ชฉ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ๋ณด๋‹ค DeepSpeech ๋ฐ Mimic/Mimic2์™€ ๊ฐ™์€ ๊ฐœ๋ฐฉํ˜• ๊ธฐ์ˆ ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋Œ€์ฒด TTS ์—”์ง„์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด dev_setup.sh ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ๋ฌธ์„œ์— ์ผ๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ์ œ์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ์‹œ๊ฐ„์ด ์ œํ•œ๋˜์–ด ์žˆ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃฐ ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@penrods ์ด๊ฒƒ์€

ํ”ผ์ฝง ๋“ฑ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋ฉด ์™„์ „ํžˆ ์ดํ•ด๋ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋ชจ๋ฐฉ์ด ์˜ค๋Š˜๋‚  ์˜คํ”„๋ผ์ธ TTS ์—”์ง„์œผ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์˜ˆ, ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉฐ ์ผํšŒ์„ฑ์ž…๋‹ˆ๋‹ค). ์šฐ๋ฆฌ๋Š” "์˜คํ”„๋ผ์ธ" STT๋ฅผ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— "๊ฐœ์ธ ํด๋ผ์šฐ๋“œ" ์ ‘๊ทผ ๋ฐฉ์‹์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋“ฃ๊ณ  ์Šฌํ”„๋‹ค. ์ €๋Š” ํ˜„์žฌ ํด๋ผ์šฐ๋“œ๋ฆฌ์Šค ์Šค๋งˆํŠธ ํ™ˆ ์†”๋ฃจ์…˜์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ค ์‹์œผ๋กœ๋“  ํด๋ผ์šฐ๋“œ์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MyCroft๊ฐ€ ์Œ์„ฑ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ข‹์€ ์†”๋ฃจ์…˜์ด ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค์น˜์— ํด๋ผ์šฐ๋“œ ์—ฐ๊ฒฐ์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜๋„ํ•œ ์ฒญ์ค‘์—๊ฒŒ๋Š” ์ ์–ด๋„ ์—์ง€ ๋จธ์‹  ๋Ÿฌ๋‹ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ผ๋ฐ˜ํ™”๋  ๋•Œ๊นŒ์ง€๋Š” ์˜์–ด๋กœ๋งŒ ๋งํ•˜๋Š” ์ œํ•œ์ด ํ—ˆ์šฉ๋˜๋Š” ์ ˆ์ถฉ์•ˆ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ MyCroft๊ฐ€ ์‹ค์ œ๋กœ Tacotron TTS ์—”์ง„ ๋ฒ„์ „์„ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค. ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?
https://github.com/MycroftAI/mimic2

์•ฝ๊ฐ„์˜ ์ง„์ „์ด ์žˆ์—ˆ๊ณ  ๊ฐœ์ธ ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ์ „ํžˆ ๋งค์šฐ WIP์ด๋ฉฐ STT์— ๋Œ€ํ•ด ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์˜ ๊ฐ•๋ ฅํ•œ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋Š” deepspeech์˜ ๋กœ์ปฌ ์ธ์Šคํ„ด์Šค์™€ ํ•จ๊ป˜ deepspeech_server ๋ฐฑ์—”๋“œ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•œํŽธ Selene-Backend (home.mycroft.ai ๋’ค์— ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ)๊ฐ€ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ์ด ์ง€๊ธˆ์€ ๋ฌธ์„œ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Selene์ด ๋ฆด๋ฆฌ์Šค๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰