TTS(Text To Speech)¿Í STT(Speech To Text)
HTML5Rocks/KO HTML5RocksÀÇ ¼Ò½Ä ¹× ÇѱÛÈ »óȲ, HTML5 °ü·Ã Á¤º¸¸¦ °øÀ¯ÇÏ´Â ºñ°ø½Ä ºí·Î±× ÆßÆ÷ÀÔ´Ï´Ù.
[¾÷µ¥ÀÌÆ®] ¸»ÇÏ´Â À¥¾Û - Speech Synthesis API (Web apps that talk - Introduction to the Speech Synthesis API)
Web Speech APIÀÔ´Ï´Ù. ¾ÆÁÖ °£´ÜÇÑ Çü½ÄÀ¸·Î µÇ¾î ÀÖ´Â APIµéÀÌÁö¸¸ ¼Õ½±°Ô TTS(Text To Speech)¸¦ ¼öÇàÇϸç, ¹Ý´ë·Î STT(Speech To Text)¸¦ ¼öÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇöÀç´Â Å©·Ò¿¡¼¸¸ Áö¿øÇϰí ÀÖ´Â ±â´ÉÀÌÁö¸¸ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀÔ´Ï´Ù.
¿ø¹® - Web apps that talk - Introduction to the Speech Synthesis API
Àü¹®
Web Speech API´Â À½¼ºÀνÄ(Voice recognition, Speech To Text)¿Í À½¼ºÇÕ¼º(Speech synthesis, Text To Speech) ±â´ÉÀ» ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ Ãß°¡ÇÏ¿´½À´Ï´Ù. ÀÌ Æ÷½ºÆ®´Â Chrome 33 ¹öÀü(¸ð¹ÙÀÏ ¹× µ¥½ºÅ©Å¾)¿¡ ÃÖ±Ù Ãß°¡µÈ API¿¡ ´ëÇÑ ¸¶Áö¸· ¹öÀüÀ» ´ë·«ÀûÀ¸·Î Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. ¸¸¾à À½¼º ÀνĿ¡ Èï¹Ì°¡ ÀÖÀ¸½Ã´Ù¸é Glen Shires°¡ ¾ó¸¶Àü À½¼º ÀÎ½Ä ±â´É¿¡ ´ëÇØ ¾´ "¸»·Î µ¿ÀÛÇÏ´Â À¥¾Û: Web Speech APIÀÇ ¼Ò°³(Voice Driven Web Apps: Introduction to the Web Speech API)"À» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.
±âÃÊ »çÇ×
Synthesis APIÀÇ °¡Àå ±âº»ÀûÀÎ »ç¿ëÀº ´ÙÀ½°ú °°ÀÌ speechSynthesis.speak()·Î º¸³»°í ¸»·Î Ç¥ÇöÇÏ´Â °ÍÀÔ´Ï´Ù. var msg = new SpeechSynthesisUtterance('Hello World'); window.speechSynthesis.speak(msg); Á÷Á¢ ½ÃµµÇغ¸¼¼¿ä! What am I reading?
¶ÇÇÑ º¼·ý, ¸»ÇÏ´Â ¼Óµµ, À½ÀÇ ³ôÀÌ, ¸ñ¼Ò¸® ±×¸®°í ¾ð¾î¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ÀÎÀÚ¸¦ ´ëÄ¡ÇÏ´Â °Í ¿ª½Ã ´ÙÀ½°ú °°ÀÌ °¡´ÉÇÕ´Ï´Ù. var msg = new SpeechSynthesisUtterance(); var voices = window.speechSynthesis.getVoices(); msg.voice = voices[10]; // Note: some voices don't support altering params msg.voiceURI = 'native'; msg.volume = 1; // 0 to 1 msg.rate = 1; // 0.1 to 10 msg.pitch = 2; //0 to 2 msg.text = 'Hello World'; msg.lang = 'en-US';
msg.onend = function(e) { console.log('Finished in ' + event.elapsedTime + ' seconds.'); };
speechSynthesis.speak(msg);
¸ñ¼Ò¸®(Voice) ¼³Á¤
¶ÇÇÑ API¸¦ ÅëÇØ ¿£Áø¿¡¼ Áö¿øÇÏ´Â ¸ñ¼Ò¸®(Voice)ÀÇ ¸®½ºÆ®¸¦ ´ÙÀ½°ú °°ÀÌ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. speechSynthesis.getVoices().forEach(function(voice) { console.log(voice.name, voice.default ? '(default)' :''); }); ±×¸®°í³ª¼ ´ÙÀ½°ú °°ÀÌ utterance °´Ã¼ÀÇ .voiceÀÇ ¼³Á¤À» ÅëÇØ ´Ù¸¥ ¸ñ¼Ò¸®¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. var msg = new SpeechSynthesisUtterance('I see dead people!'); msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Whisper'; })[0]; speechSynthesis.speak(msg);
µ¥¸ð
±¸±Û I/O 2013 ¹ßÇ¥ "´õ ¸ÚÁø À¥: ¿©·¯ºÐÀÌ ¾ðÁ¦³ª ¿øÇÏ´Â ±â´Éµé(More Awesome Web: features you've always wanted)"¿¡¼ Àú´Â ±¸±Û ³ª¿ì(Google Now)³ª ½Ã¸®(Siri)¿Í ºñ½ÁÇÏ°Ô Web Speech APIÀÇ SpeechRecognition ¼ºñ½º¿Í ±¸±Û ¹ø¿ª API(Google Translate API)¸¦ ÅëÇØ ¸¶ÀÌÅ© ÀÔ·ÂÀ» ´Ù¸¥ ¾ð¾î·Î ÀÚµ¿À¸·Î ¹ø¿ªÇÏ´Â µ¥¸ð¸¦ º¸¿©µå·È½À´Ï´Ù.
µ¥¸ð: http://www.moreawesomeweb.com/demos/speech_translate.html
ºÒÇàÇϰԵµ ÀÌ´Â À½¼º ÇÕ¼º(Speech synthesis)¸¦ ¼öÇàÇϱâ À§ÇØ ¹®¼ÈµÇÁö ¾ÊÀº ±â´É(±×¸®°í ºñ°ø½ÄÀûÀÎ API)À» »ç¿ëÇÏ¿´½À´Ï´Ù. ÀÚ ÀÌÁ¦ ¿ì¸®´Â ´Ù½Ã ¹ø¿ªÀ» ¸»ÇÒ ¼ö ÀÖ´Â ¿ÏÀüÇÑ Web Speech API¸¦ °¡Áö°Ô µÇ¾ú½À´Ï´Ù! µ¥¸ð´Â Synthesis API¸¦ »ç¿ëÇϵµ·Ï ¾÷µ¥ÀÌÆ®Çصξú½À´Ï´Ù.
ºê¶ó¿ìÀú Áö¿ø
ÇöÀç Chrome 33 ¹öÀüÀº Web Speech API¸¦ ¿ÏÀüÇÏ°Ô Áö¿øÇϸç iOS7ÀÇ »çÆÄ¸®´Â ÀϺÎÀÇ ±â´ÉÀ» Áö¿øÇϰí ÀÖ½À´Ï´Ù.
±â´ÉÀÇ Áö¿ø¿©ºÎ °Ë»ç
(Å©·Î¹Ì¿òÀÇ °æ¿ìó·³) °¢ ºê¶ó¿ìÀúµéÀº Web Speech API¸¦ °¢ ºÎºÐÀ» µû·Î Áö¿øÇϰí ÀÖÀ» °ÍÀ̹ǷΠ´ÙÀ½°ú °°ÀÌ °¢ ±â´ÉÀ» ºÐ¸®ÇÏ¿© °Ë»çÇÒ ¼ö ÀÖ½À´Ï´Ù. if ('speechSynthesis' in window) { // Synthesis support. Make your web apps talk! }
if ('SpeechRecognition' in window) { // Speech recognition support. Talk to your apps! }
|