๐Ÿ“”
web_study
  • JavaScript
  • ์—˜๋ฆฌ_์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ
      • ํด๋ž˜์Šค ์˜ˆ์ œ์™€ ์ฝœ๋ฐฑํ•จ์ˆ˜
      • ์—ฐ์‚ฐ์ž boolean
      • ํ•จ์ˆ˜ ์ •์˜, ํ˜ธ์ถœ ๊ทธ๋ฆฌ๊ณ  ์ฝœ๋ฐฑ
      • ๋ณ€์ˆ˜ํƒ€์ž…๊ณผ object ์ฐจ์ด์ 
    • JavaScript async ์™€ await
    • JavaScript Promise
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ callback
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ json
    • ์œ ์šฉํ•œ 10๊ฐ€์ง€ ๋ฐฐ์—ด ํ•จ์ˆ˜๋“ค
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด(array)
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ object
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ (class vs object) ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—ฐ์‚ฐ.๋ฐ˜๋ณต๋ฌธ
    • ๋ฐ์ดํ„ฐํƒ€์ž…, data types, let vs var, hoisting
    • script async ์™€ defer์˜ ์ฐจ์ด์  ์ฝ˜์†” ์ถœ๋ ฅ
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—ญ์‚ฌ
  • ์ƒํ™œ์ฝ”๋”ฉ
    • ์žฌ๊ท€ํ•จ์ˆ˜
    • ์ •๊ทœ ํ‘œํ˜„์‹
    • ๊ฐ์ฒด์ง€ํ–ฅ
      • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ์ƒ์„ฑ์ž์™€ new
      • ์ „์—ญ๊ฐ์ฒด
      • this
      • ์ƒ์†
      • prototype
      • ํ‘œ์ค€ ๋‚ด์žฅ ๊ฐ์ฒด์˜ ํ™•์žฅ
      • object
      • ๋ฐ์ดํ„ฐ ํƒ€์ž…
      • ์ฐธ์กฐ
    • ํ•จ์ˆ˜์ง€ํ–ฅ
      • ์œ ํšจ๋ฒ”์œ„
      • ๊ฐ’์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜์™€ ์ฝœ๋ฐฑ
      • ํด๋กœ์ €
      • arguments
      • ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ
    • UI API, ๋ฌธ์„œ
    • ๋ชจ๋“ˆ
    • ๊ฐ์ฒด
    • ๋ฐฐ์—ด
    • ํ•จ์ˆ˜
    • ๋ฐ˜๋ณต๋ฌธ
    • ์กฐ๊ฑด๋ฌธ
    • ์ˆซ์ž์™€๋ฌธ์ž
    • ๋ณ€์ˆ˜
    • ๋น„๊ต
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋”
    • Getting the Weather part One Geolocation
    • Image Background
    • TO DO List
    • Saving the User Name
    • Clock part One
    • ์กฐ๊ฑด๋ฌธ ( if , else, and, or)
    • evnet handlers
    • Function
    • Objects
    • Arrays
    • Variable(๋ณ€์ˆ˜!)
    • Javascript
  • javascript30
    • Dram Kit
    • clock
    • Css Javascript
    • Array Cardio
    • flex panels
    • type ahead
    • Canvas Draw
    • Speech Synthesis
    • Whack A Mole
  • web standard
    • script ๋ถ€๋ถ„
    • form๋ถ€๋ถ„
    • ์›น์ ‘๊ทผ์„ฑ
    • <meta>
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ_์ด๋ก 
    • ๊ธฐ๋ณธ์ง€์‹(JAVASCRIPT)
    • ๊ธฐ๋ณธ์ง€์‹(CSS)
    • ๊ธฐ๋ณธ์ง€์‹(HTML)
    • ๊ธฐ๋ณธ์ง€์‹(HTTP)
    • Dom
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ, ํ”Œ๋กœ๊ทธ์ธ
Powered by GitBook
On this page

Was this helpful?

  1. javascript30

Speech Synthesis

const msg = new SpeechSynthesisUtterance();// ๊ฐ์ฒด ์„ ์–ธ (๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ ๋˜์–ด์žˆ๋Š” ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ๋ฅผ ์†Œ๋ฆฌ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” TTS API)
let voices = [];
const voicesDropdown = document.querySelector('[name="voice"]');
const options = document.querySelectorAll('[type="range"], [name="text"]');
const speakButton = document.querySelector('#speak');
const stopButton = document.querySelector('#stop');
msg.text = document.querySelector('[name="text"]').value;

function populateVoices() {
    voices = this.getVoices();
    voicesDropdown.innerHTML = voices
        .filter(voice => voice.lang.includes('ko'))
        .map(voice => `<option value="${voice.name}">${voice.name} (${voice.lang})</option>`)
        .join(''); // ์˜ต์…˜ ์ƒ์„ฑ 
}

function setVoice() {
    msg.voice - voices.find(voice => voice.name === this.valye);
    toggle();
}
/*์†Œ๋ฆฌ๋ฅผ ์„ค์ • ์ด๋ฒคํŠธ๋ฅผ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜ 
TTS ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” msg ๊ฐ์ฒด์˜ voice ๊ฐ’์„ ๋ฐ”๊ฟ”์ค€ ํ›„ ์ง์ ‘ ์ž‘์„ฑํ•œ toggle() ํ•จ์ˆ˜๋กœ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์žฌ์ƒํ•œ๋‹ค. */


function toggle(startOver = true) {
    speechSynthesis.cancel();
    if(startOver){
        speechSynthesis.speak(msg);
    }
}
/* ์Œ์„ฑ์„ ์žฌ์ƒํ•˜๋Š” toggle() ์ž‘์„ฑ ์ธ์ž๋กœ startOver๋ฅผ ๋„˜๊ธฐ๊ณ , ๊ธฐ๋ณธ ์„ค์ • ์ธ์ž์ธ true์ธ ๊ฒฝ์šฐ 
  ์ด์ „ ์Œ์„ฑ์„ ์ทจ์†Œํ•˜๊ณ  ์ƒˆ๋กœ์šด ์Œ์„ฑ์„ ์žฌ์ƒํ•˜๋ฉฐ, false๋ฅผ ์ธ์ž๋กœ ์ฃผ๋ฉด ์Œ์„ฑ๋งŒ ์ทจ์†Œํ•œ๋‹ค. */
  
  
function setOption(){
    console.log(this.name, this.value);
    msg[this.name] = this.value;
    toggle();
}
/* ๋‹ค๋ฅธ ์„ค์ •์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” setOption() ์ž‘์„ฑํ•˜๊ธฐ
   input ๊ฐ์ฒด์˜ name์„ ๋ณ€๊ฒฝํ•  ์†์„ฑ์˜ ์ด๋ฆ„๊ณผ ์ผ์น˜์‹œํ‚ค๋ฉด input ๊ฐ์ฒด์˜ value๋กœ ๋ณ„๋„๋กœ ์˜ต์…˜์„ ๊ตฌ๋ณ„ํ•˜์—ฌ ์ž‘์„ฑํ•  ํ•„์š”์—†์ด ํ•œ๋ฒˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.*/

// ->  ํ•จ์ˆ˜๋“ค์„ ์ด๋ฒคํŠธ๋กœ ๊ฑธ์–ด์ค€๋‹ค.
speechSynthesis.addEventListener('voiceschanged', populateVoices);
voicesDropdown.addEventListener('change', setVoice);
options.forEach(option => option.addEventListener('change', setOption)); // ์˜ต์…˜์ด ๋ณ€๊ฒฝ๋ ๋•Œ ๋งˆ๋‹ค ์‹คํ–‰ 
speakButton.addEventListener('click', toggle);
stopButton.addEventListener('click', ()=> toggle(false));

<div class="voiceinator">

<h1>speak ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด์„ธ์š”!</h1>

<select name="voice" id="voices">
    <option value="">Select A Voice</option>
</select>

<label for="rate">Rate:</label>
<input name="rate" type="range" min="0" max="3" value="1" step="0.1">

<label for="pitch">Pitch:</label>

<input name="pitch" type="range" min="0" max="2" step="0.1">
<textarea name="text">์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฐ˜๊ฐ€์›Œ์š”.๐Ÿ˜Š</textarea>
<button id="stop">Stop!</button>
<button id="speak">Speak</button>
</div>
html {
  font-size: 10px;
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

body {
  margin: 0;
  padding: 0;
  font-family: sans-serif;
  background-color: #3BC1AC;
  display: flex;
  min-height: 100vh;
  align-items: center;

  background-image:
  radial-gradient(circle at 100% 150%, #3BC1AC 24%, #42D2BB 25%, #42D2BB 28%, #3BC1AC 29%, #3BC1AC 36%, #42D2BB 36%, #42D2BB 40%, transparent 40%, transparent),
  radial-gradient(circle at 0    150%, #3BC1AC 24%, #42D2BB 25%, #42D2BB 28%, #3BC1AC 29%, #3BC1AC 36%, #42D2BB 36%, #42D2BB 40%, transparent 40%, transparent),
  radial-gradient(circle at 50%  100%, #42D2BB 10%, #3BC1AC 11%, #3BC1AC 23%, #42D2BB 24%, #42D2BB 30%, #3BC1AC 31%, #3BC1AC 43%, #42D2BB 44%, #42D2BB 50%, #3BC1AC 51%, #3BC1AC 63%, #42D2BB 64%, #42D2BB 71%, transparent 71%, transparent),
  radial-gradient(circle at 100% 50%, #42D2BB 5%, #3BC1AC 6%, #3BC1AC 15%, #42D2BB 16%, #42D2BB 20%, #3BC1AC 21%, #3BC1AC 30%, #42D2BB 31%, #42D2BB 35%, #3BC1AC 36%, #3BC1AC 45%, #42D2BB 46%, #42D2BB 49%, transparent 50%, transparent),
  radial-gradient(circle at 0    50%, #42D2BB 5%, #3BC1AC 6%, #3BC1AC 15%, #42D2BB 16%, #42D2BB 20%, #3BC1AC 21%, #3BC1AC 30%, #42D2BB 31%, #42D2BB 35%, #3BC1AC 36%, #3BC1AC 45%, #42D2BB 46%, #42D2BB 49%, transparent 50%, transparent);
  background-size:100px 50px;
}

.voiceinator {
  padding: 2rem;
  width: 50rem;
  margin: 0 auto;
  border-radius: 1rem;
  position: relative;
  background: white;
  overflow: hidden;
  z-index: 1;
  box-shadow: 0 0 5px 5px rgba(0,0,0,0.1);
}

h1 {
  width: calc(100% + 4vw);
  margin: -2vw 0 2vw -2vw;
  padding: 20px;
  background: #ffc600;
  border-bottom: 5px solid #F3C010;
  text-align: center;
  font-size: 2.5vw;
  font-weight: 500;
  text-shadow: 3px 3px 0 #F3C010;
}

.voiceinator input,
.voiceinator button,
.voiceinator select,
.voiceinator textarea {
  width: 100%;
  display: block;
  margin: 10px 0;
  padding: 10px;
  border: 0;
  font-size: 2rem;
  background: #F7F7F7;
  outline: 0;
}

textarea {
  height: 20rem;
}

.voiceinator button {
  background: #ffc600;
  border: 0;
  width: 49%;
  float: left;
  margin-bottom: 0;
  font-size: 1.6vw;
  border-bottom: 5px solid #F3C010;
  cursor: pointer;
  position: relative;
}

.voiceinator button:active {
  top: 2px;
}

.voiceinator button:nth-of-type(1) {
  margin-right: 2%;
}
PreviousCanvas DrawNextWhack A Mole

Last updated 3 years ago

Was this helpful?