Published:

Last Updated:

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ๊ธ€ ์ฝ์–ด์ฃผ๋Š” ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

์›น์‚ฌ์ดํŠธ์—์„œ ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ์ฝ์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ์‹œ๊ฐ ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ, ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์„ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. HTML5์˜ SpeechSynthesis API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ์›น์‚ฌ์ดํŠธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ๊ธ€ ์ฝ์–ด์ฃผ๋Š” ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์›น์‚ฌ์ดํŠธ ํ…์ŠคํŠธ ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์›น์‚ฌ์ดํŠธ์—์„œ ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ์ฝ์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ์‹œ๊ฐ์  ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ, ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์„ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. HTML5์˜ SpeechSynthesis API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ์›น์‚ฌ์ดํŠธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ ๊ตฌํ˜„์œผ๋กœ ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฒ•

"์Šคํ”ผ์ปค ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์Œ์„ฑ์„ ์ฝ๊ธฐ ์‹œ์ž‘ํ•˜๊ณ , ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ์Œ์„ฑ์„ ๋ฉˆ์ถ”๋Š”" ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ํ…์ŠคํŠธ๊ฐ€ ์ฝํžˆ๋Š” ๋™์•ˆ ์Œ์„ฑ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด ๋”์šฑ ์ง๊ด€์ ์ด๊ณ  ์œ ์šฉํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SpeechSynthesis API๋ž€?

SpeechSynthesis API๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋“ฃ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํŠนํžˆ ์ ‘๊ทผ์„ฑ ์ธก๋ฉด์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

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

๊ธ€ ์ฝ์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์˜ ์žฅ์ 

์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ (SEO ๊ด€์ ์—์„œ)

์›น์‚ฌ์ดํŠธ์—์„œ ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ์ฝ์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์€ ์‹œ๊ฐ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ค‘์š”ํ•œ ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‹œ๊ฐ์žฅ์• ์ธ๋„ ์ฝ˜ํ…์ธ ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ ‘๊ทผ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ ์ˆœ์œ„๊ฐ€ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผ์„ฑ์ด ํ–ฅ์ƒ๋œ ์›น์‚ฌ์ดํŠธ๋Š” ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)์—๋„ ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์šด์˜์ž์˜ ํŽธ๋ฆฌํ•œ ์ฝ˜ํ…์ธ  ์ ๊ฒ€

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

์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ๋ฐ ์ฒด๋ฅ˜ ์‹œ๊ฐ„ ํ–ฅ์ƒ

์‚ฌ์šฉ์ž๋Š” ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜๋ฉด์„œ๋„ ์ฝ˜ํ…์ธ ๋ฅผ ์‰ฝ๊ฒŒ ๋“ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ธ€์„ ๋Œ€๊ฐ• ์ฝ๋Š” ๊ฒƒ๋ณด๋‹ค ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์›น์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ฒด๋ฅ˜ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ SEO์—๋„ ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ์ตœ์ ํ™”(SEO) ๊ณ ๋ ค ์‚ฌํ•ญ

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

๋”ฐ๋ผ์„œ ์ด ๊ธฐ๋Šฅ์€ SEO, ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ, ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ๋ชจ๋‘์—์„œ ์ค‘์š”ํ•œ ์žฅ์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ๊ธ€ ์ฝ์–ด ์ฃผ๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ๊ธ€ ์ฝ์–ด์ฃผ๋Š” ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‹ค์ œ๋กœ ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด์ฃผ๋Š” ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ธฐ๋ณธ์ ์ธ ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

let isSpeaking = false;

 function speakText() {
 const textElements = document.querySelectorAll('.tt_article_useless_p_margin');
 const utterance = new SpeechSynthesisUtterance();
 utterance.lang = 'ko-KR';
 let isEndReached = false;

 // ํ…์ŠคํŠธ๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ์ฝ์Œ
 let textToRead = '';
 textElements.forEach(element = {
 textToRead += element.innerText.trim() + ' ';
 });

 // ์Œ์„ฑ์„ ํ•œ ๋ฒˆ๋งŒ ์ฝ๋„๋ก ์„ค์ •
 function speakNextText() {
 if (isSpeaking) {
 utterance.text = textToRead;
 speechSynthesis.speak(utterance);
 utterance.onend = function() {
 isSpeaking = false;
 };
 }
 }

 if (!isSpeaking) {
 isSpeaking = true;
 speakNextText(); // ํ…์ŠคํŠธ ์ฝ๊ธฐ ์‹œ์ž‘
 }
 }

 // ์ƒˆ๋กœ ๊ณ ์นจ ์‹œ ์Œ์„ฑ์„ ๋ฉˆ์ถ”๋„๋ก ์„ค์ •
 window.onbeforeunload = function() {
 if (isSpeaking) {
 speechSynthesis.cancel();
 isSpeaking = false;
 }
 };

 // ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์Œ์„ฑ ์ฝ๊ธฐ/์ค‘์ง€
 document.getElementById("speakerButton").addEventListener("click", function() {
 if (isSpeaking) {
 speechSynthesis.cancel(); // ์Œ์„ฑ์„ ๋ฉˆ์ถค
 isSpeaking = false;
 } else {
 speakText(); // ์Œ์„ฑ ์‹œ์ž‘
 }
 });

์ฝ”๋“œ ์„ค๋ช…

SpeechSynthesisUtterance: ์Œ์„ฑ์„ ํ•ฉ์„ฑํ•  ํ…์ŠคํŠธ์™€ ์†์„ฑ(์–ธ์–ด ๋“ฑ)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • utterance.lang = 'ko-KR': ์Œ์„ฑ์„ ํ•œ๊ตญ์–ด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์›ํ•˜๋Š” ์–ธ์–ด๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • utterance.text = textToRead: ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•  ํ…์ŠคํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

speechSynthesis.speak(): ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‹ค์ œ๋กœ ์Œ์„ฑ์„ ํ•ฉ์„ฑํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • speechSynthesis.cancel(): ์Œ์„ฑ์„ ์ฆ‰์‹œ ๋ฉˆ์ถ”๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์Œ์„ฑ ์ฝ๊ธฐ๊ฐ€ ์ง„ํ–‰ ์ค‘์ผ ๋•Œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์Œ์„ฑ์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.
  • isSpeaking: ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์ด ์‹คํ–‰ ์ค‘์ธ์ง€๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์ด ๋ณ€์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ ์Œ์„ฑ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„ํŠผ ์ถ”๊ฐ€ ๋ฐ ์Œ์„ฑ ์ฝ๊ธฐ ์‹œ์ž‘/์ค‘์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ ์Œ์„ฑ์„ ์ฝ๊ณ  ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก, ์Šคํ”ผ์ปค ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์Œ์„ฑ์ด ์‹œ์ž‘๋˜๊ณ , ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ์Œ์„ฑ์„ ๋ฉˆ์ถ”๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

div class="speaker-container"
 !-- ์Šคํ”ผ์ปค ๋ฒ„ํŠผ --
 button id=speakerButton class="speaker-button"/button
 !-- ์•ˆ๋‚ด ํ…์ŠคํŠธ --
 span class="speaker-text"ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ธ€์„ ์ฝ์–ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค./span
/div
p class="end"

์„ค๋ช…:

  • div class="speaker-container": ์Šคํ”ผ์ปค ๋ฒ„ํŠผ๊ณผ ์•ˆ๋‚ด ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค.
  • button id="speakerButton" class="speaker-button"/button: ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ์‹œ์ž‘/์ค‘์ง€ํ•˜๋Š” ์Šคํ”ผ์ปค ์•„์ด์ฝ˜ ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค.
  • span class="speaker-text"ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ธ€์„ ์ฝ์–ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค./span: ๋ฒ„ํŠผ ์˜†์— ์•ˆ๋‚ด ํ…์ŠคํŠธ๊ฐ€ ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • p class="end": ํŽ˜์ด์ง€์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ๋‹จ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์Œ์„ฑ ํ•ฉ์„ฑ๊ณผ๋Š” ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ

style
 .speaker-button {
 font-size: 40px; /* ์Šคํ”ผ์ปค ์•„์ด์ฝ˜ ํฌ๊ธฐ */
 padding: 10px 15px; /* ๋ฒ„ํŠผ์˜ ๋‚ด๋ถ€ ์—ฌ๋ฐฑ */
 border: none; /* ๋ฒ„ํŠผ์˜ ํ…Œ๋‘๋ฆฌ ์ œ๊ฑฐ */
 background-color: transparent; /* ๋ฒ„ํŠผ ๋ฐฐ๊ฒฝ ํˆฌ๋ช… */
 cursor: pointer; /* ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ํด๋ฆญ ๊ฐ€๋Šฅํ•œ ๋А๋‚Œ */
 }

 .speaker-button:hover {
 color: white; /* ํ˜ธ๋ฒ„ ์‹œ ์•„์ด์ฝ˜ ์ƒ‰์ƒ ๋ณ€๊ฒฝ */
 background-color: #007BFF; /* ํ˜ธ๋ฒ„ ์‹œ ๋ฐฐ๊ฒฝ ์ƒ‰์ƒ ๋ณ€๊ฒฝ */
 }
/style

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ์ ์šฉํ•˜๊ธฐ

ํ‹ฐ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋กœ ์ด๋™:

  • ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์— ๋กœ๊ทธ์ธ ํ›„ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

HTML/JS ์ฝ”๋“œ ์ถ”๊ฐ€:

  • [๊ด€๋ฆฌ HTML ํŽธ์ง‘] ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • /body ํƒœ๊ทธ ์•ž์— ์œ„์˜ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์™€ ๋ฒ„ํŠผ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ณธ๋ฌธ์— ์ ์šฉ:

  • ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์˜ ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ, ํ…์ŠคํŠธ์— ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธ€์— .tt_article_useless_p_margin ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๊ฐ€ ํ…์ŠคํŠธ๋กœ ํฌํ•จ๋˜๋ฉด, ํ•ด๋‹น ํ…์ŠคํŠธ๊ฐ€ ์Œ์„ฑ์œผ๋กœ ์ฝํž™๋‹ˆ๋‹ค.

๊ธ€์— ์Œ์„ฑ ๋ฒ„ํŠผ ์‚ฝ์ž…:

  • ๊ธ€์— button id="speakerButton" ์Œ์„ฑ ์ฝ๊ธฐ ์‹œ์ž‘/์ค‘์ง€/button ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ, ์‚ฌ์šฉ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์Œ์„ฑ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๊ธ€ ์Œ์„ฑ ์ง€์› ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ

button id="ttsBtn" ๊ตฌ๊ธ€ ์Œ์„ฑ์œผ๋กœ ๋“ฃ๊ธฐ/์ค‘๋‹จ/button

script
let isSpeaking = false;

document.getElementById('ttsBtn').addEventListener('click', function () {
 const synth = window.speechSynthesis;

 // 1. ์ด๋ฏธ ์žฌ์ƒ ์ค‘์ด๋ฉด ๋ฉˆ์ถ”๊ธฐ
 if (synth.speaking) {
 synth.cancel();
 return;
 }

 const contentElement = document.querySelector('.tt_article_useless_p_margin.contents_style');
 if (!contentElement) return;

 const text = contentElement.innerText;
 const utterance = new SpeechSynthesisUtterance(text);

 // 2. ๊ตฌ๊ธ€ ์Œ์„ฑ ์ฐพ๊ธฐ ์„ค์ •
 const voices = synth.getVoices();
 // ๋ชฉ์†Œ๋ฆฌ ๋ชฉ๋ก ์ค‘ 'Google'๊ณผ 'ko-KR'์ด ํฌํ•จ๋œ ๊ฒƒ์„ ์šฐ์„ ์ ์œผ๋กœ ์ฐพ์Šต๋‹ˆ๋‹ค.
 const googleVoice = voices.find(voice = 
 voice.name.includes('Google') && voice.lang === 'ko-KR'
 ) || voices.find(voice = voice.lang === 'ko-KR'); // ๊ตฌ๊ธ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ ํ•œ๊ตญ์–ด๋ผ๋„ ์‚ฌ์šฉ

 if (googleVoice) {
 utterance.voice = googleVoice;
 }

 utterance.lang = 'ko-KR';
 utterance.rate = 1.0;
 utterance.pitch = 1.0;

 synth.speak(utterance);
});

window.speechSynthesis.getVoices();
/script

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์˜ ๋‹ค์–‘ํ•œ ๋ณ€ํ™”๋กœ ์ ‘๊ทผ์„ฑ์„ ํ–ฅ์ƒํ•ด ๋ณด์„ธ์š”

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ์—์„œ ์Šคํ”ผ์ปค ๋ฒ„ํŠผ์„ ์ด์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ์ฝ๊ณ , ์Œ์„ฑ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ ‘๊ทผ์„ฑ์„ ๊ณ ๋ คํ•œ ์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์— ํ•œ ๋ฐœ ๋” ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, SpeechSynthesis API๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์Œ์„ฑ ํ•ฉ์„ฑ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋‹ค์–‘ํ•œ ์›น ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉํ•ด ๋ณด์„ธ์š”.

์Œ์„ฑ ์ฝ๊ธฐ ์‹œ์ž‘๊ณผ ์ค‘์ง€๋ฅผ ์œ„ํ•œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๋™์ž‘์€ speechSynthesis.cancel()๊ณผ ๊ฐ™์€ API ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์Œ์„ฑ์œผ๋กœ ์†์‰ฝ๊ฒŒ ๋“ค์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.