πŸ”Š Web Speech API둜 μŒμ„±μΈμ‹ μ‹œμž‘ν•  λ•Œ μ§μ „μ˜ μ˜€λ””μ˜€κ°€ μž¬μƒλ˜λŠ” 이슈

AromahyangΒ·2024λ…„ 11μ›” 21일
0

Frontend

λͺ©λ‘ 보기
7/7
post-thumbnail

Web Speech API의 SpeechRecognition μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•˜μ—¬ μŒμ„± 인식을 κ΅¬ν˜„ν•œ react-speech-recognition이 μžˆλ‹€.
이 라이브러리λ₯Ό μ΄μš©ν•˜μ—¬ μŒμ„±μΈμ‹ μ„œλΉ„μŠ€λ₯Ό λ§Œλ“œλŠ” 쀑 λ§Œλ‚œ μ—λŸ¬μ™€ ν•΄κ²° 과정을 λ‹΄μ•„λ³΄μ•˜λ‹€.

문제 상황

μŒμ„±μΈμ‹ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  λ•Œ μ˜€λ””μ˜€κ°€ μžλ™μž¬μƒλ˜λŠ” κ²½μš°κ°€ μžˆλ‹€.
μ˜€λ””μ˜€λ₯Ό λ‹€ μž¬μƒν•œ ν›„ μŒμ„±μΈμ‹μ„ ν•  경우 직전에 μž¬μƒλœ μ˜€λ””μ˜€κ°€ μ‹œμŠ€ν…œ λ³Όλ₯¨λ³΄λ‹€ 큰 μ†Œλ¦¬λ‘œ μž¬μƒλ˜λŠ” μ΄μŠˆκ°€ μžˆμ—ˆλ‹€.
Safariμ—μ„œλ§Œ λ°œμƒν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μ˜€λ‹€.

ν•΄κ²° κ³Όμ •

μŒμ„±μΈμ‹μ„ μ‹œμž‘ν•  λ•Œ(SpeechRecognition.start()) SpeechRecognition 이벀트 start, audiostartκ°€ 같이 ν˜ΈμΆœλœλ‹€.

  • start: μ˜€λ””μ˜€ 채널에 λ“€μ–΄μ˜¨ μ˜€λ””μ˜€λ₯Ό λ“£κΈ° μ‹œμž‘ν•  λ•Œ λ°œμƒ
  • audiostart: μ‚¬μš©μžμ— μ˜ν•΄ μ˜€λ””μ˜€λ₯Ό μˆ˜μ§‘ν•˜κΈ° μ‹œμž‘ν•  λ•Œ λ°œμƒ

μŒμ„± 인식을 ν•˜λ €λ©΄ λ…ΉμŒ κΈ°λŠ₯이 μ„ ν–‰λ˜λŠ”λ°, λ…ΉμŒν•  λ•Œ μ˜€λ””μ˜€ 채널에 μ˜€λ””μ˜€κ°€ λ“€μ–΄κ°€λ‹ˆκΉŒ 두 μ΄λ²€νŠΈκ°€ 같이 λ°œμƒν•˜λŠ” κ²ƒμœΌλ‘œ 보인닀.

react-speech-recognition은 audiostart 이벀트λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ μ œμ–΄ν•˜λŠ” μ½”λ“œκ°€ μ—†κΈ° λ•Œλ¬Έμ— 라이브러리λ₯Ό forkν•΄μ„œ μˆ˜μ •ν•˜μ˜€λ‹€.

react-speech-recognition의 useSpeechRecognition 훅이 μ›λž˜ νŒŒλΌλ―Έν„°λ₯Ό 받지 μ•Šμ§€λ§Œ, audiostart와 audioend λ“± μ˜€λ””μ˜€μ™€ κ΄€λ ¨λœ 이벀트λ₯Ό μ œμ–΄ν•˜λŠ” νŒŒλΌλ―Έν„°λ₯Ό 받도둝 μˆ˜μ •ν•˜μ˜€λ‹€.

// as-is
import { useSpeechRecognition } from 'react-speech-recognition';
const { ... } = useSpeechRecognition();

// to-be
import { useSpeechRecognition } from 'react-speech-recognition';
const { ... } = useSpeechRecognition({
  onAudioStart: () => {},
  onAudioEnd: () => {},
});

κ²°λ‘ 

Safariμ—μ„œ μŒμ„± 인식을 μ‹œμž‘ν•  λ•Œ start와 audiostart μ΄λ²€νŠΈκ°€ ν•¨κ»˜ 호좜되기 λ•Œλ¬Έμ— audiostart μ΄λ²€νŠΈμ— λŒ€ν•œ μ œμ–΄λ„ ν•„μš”ν•  수 μžˆλ‹€.

μ°Έκ³ 

Web Speech API SpeechRecognition
react-speech-recognition

profile
보여주기 식이 μ•„λ‹Œ κ²½ν—˜ν•˜κ³  배운 것을 μ†Œμ†Œν•˜κ²Œ κΈ°λ‘ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보