sitelink1  
sitelink2  
extra_vars3  
extra_vars4  
extra_vars5  
extra_vars6  

웹 브라우저(HTML5) 기반의 UI에서 STT(Speech-to-Text) 기능을 구현하려면 Web Speech API를 활용하는 것이 가장 쉽고 효율적입니다.

Web Speech API는 브라우저에서 직접 음성을 인식하고 텍스트로 변환할 수 있으며, 이를 OpenAI Assistants API에 전달하여 챗봇과 상호작용할 수 있습니다.


웹 브라우저에서 STT를 구현하는 방법

1️⃣ Web Speech API (STT)로 음성 인식

웹 브라우저에서 사용자의 음성을 받아 텍스트로 변환하는 기능.

2️⃣ OpenAI Assistants API로 변환된 텍스트 전송

변환된 텍스트를 Assistants API에 전달하여 답변을 받음.

3️⃣ TTS(Text-to-Speech) API로 음성 출력(Optional)

챗봇의 응답을 다시 음성으로 변환하여 사용자에게 들려줌.


1. Web Speech API를 이용한 HTML5 + JavaScript 코드

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>음성 인식 챗봇</title>
</head>
<body>
    <h1>음성 인식 챗봇</h1>
    <button id="start-recording">???? 음성 입력</button>
    <p id="recognized-text">음성 인식 결과: <span></span></p>
    <p id="chatbot-response">챗봇 응답: <span></span></p>

    <script>
        const startRecordingButton = document.getElementById("start-recording");
        const recognizedTextElement = document.querySelector("#recognized-text span");
        const chatbotResponseElement = document.querySelector("#chatbot-response span");

        // Web Speech API: SpeechRecognition 설정
        const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
        recognition.lang = "ko-KR";  // 한국어 인식
        recognition.interimResults = false; // 중간 결과 비활성화
        recognition.continuous = false; // 한 번의 음성 인식 후 종료

        startRecordingButton.addEventListener("click", () => {
            recognition.start();
            startRecordingButton.disabled = true;
            startRecordingButton.textContent = "????️ 음성 인식 중...";
        });

        recognition.onresult = async (event) => {
            const transcript = event.results[0][0].transcript;
            recognizedTextElement.textContent = transcript;
            startRecordingButton.disabled = false;
            startRecordingButton.textContent = "???? 음성 입력";
            
            // OpenAI Assistant API에 텍스트 전달 후 응답 받기
            const response = await sendTextToAssistant(transcript);
            chatbotResponseElement.textContent = response;
            
            // TTS로 응답 음성 출력 (선택 사항)
            speakResponse(response);
        };

        recognition.onerror = (event) => {
            console.error("음성 인식 오류:", event.error);
            startRecordingButton.disabled = false;
            startRecordingButton.textContent = "???? 음성 입력";
        };

        // OpenAI API에 질문을 보내고 응답 받기
        async function sendTextToAssistant(text) {
            const OPENAI_API_KEY = "your-openai-api-key";
            const THREAD_ID = "your-thread-id";  // 생성된 thread ID를 사용
            const API_URL = `https://api.openai.com/v1/threads/${THREAD_ID}/messages`;

            const response = await fetch(API_URL, {
                method: "POST",
                headers: {
                    "Authorization": `Bearer ${OPENAI_API_KEY}`,
                    "Content-Type": "application/json"
                },
                body: JSON.stringify({
                    role: "user",
                    content: text
                })
            });

            const data = await response.json();
            return data.choices[0].message.content;
        }

        // TTS(Text-to-Speech)로 챗봇 응답을 음성으로 출력
        function speakResponse(text) {
            const utterance = new SpeechSynthesisUtterance(text);
            utterance.lang = "ko-KR";  // 한국어 음성 설정
            speechSynthesis.speak(utterance);
        }
    </script>
</body>
</html>

 동작 방식

  1. ???? 버튼 클릭 시 음성 입력 시작
  2. Web Speech API가 음성을 인식하여 텍스트로 변환
  3. 변환된 텍스트를 OpenAI Assistants API에 전달
  4. GPT가 생성한 응답을 화면에 출력
  5. TTS를 사용하여 챗봇 응답을 음성으로 변환하여 출력(선택 사항)

기능 요약

기능 사용 기술
STT (음성을 텍스트로 변환) Web Speech API
OpenAI에 텍스트 전달 Assistants API (/v1/threads/{thread_id}/messages)
TTS (텍스트를 음성으로 변환) Web Speech API (SpeechSynthesis)

 필요한 설정

  • your-openai-api-key: OpenAI API 키를 입력해야 합니다.
  • your-thread-id: 생성된 Assistant의 thread ID를 입력해야 합니다.

 이 방식의 장점

브라우저 내에서 음성 인식 (STT) & 음성 출력 (TTS) 가능
별도의 STT API 비용이 발생하지 않음
모든 주요 브라우저(Chrome, Edge, Safari)에서 지원됨
HTML5 + JavaScript만으로 구현 가능 (추가 플러그인 불필요)


 결론

 

웹 브라우저에서 STT(음성 인식)OpenAI Assistant API 호출TTS(음성 출력) 하는 완전한 음성 챗봇을 Web Speech API와 OpenAI API를 활용하여 구현할 수 있습니다. ????

번호 제목 글쓴이 날짜 조회 수
공지 구버전 다운로드 황제낙엽 2015.09.18 666
» [ChatGPT] 웹 브라우저에서 STT를 구현하는 방법 황제낙엽 2025.02.09 176
26 홈 화면에 웹 바로가기를 추가하기(A2HS) [1] file 황제낙엽 2023.05.31 117
25 ERR_SSL_VERSION_OR_CIPHER_MISMATCH file 황제낙엽 2022.02.04 179
24 ERR_CERT_COMMON_NAME_INVALID 황제낙엽 2021.12.16 311
23 SEC_ERROR_UNKNOWN 또는 CORS ERROR 황제낙엽 2021.08.09 117
22 크롬 버전 확인 명령어 (주소창) 황제낙엽 2021.06.14 214
21 List of Chromium Command Line Switches 황제낙엽 2021.04.02 275
20 HAR Analyzer (har 분석, 패킷 추출) file 황제낙엽 2020.11.04 158
19 네트워크 분석파일(har) 저장 및 열기 file 황제낙엽 2020.11.04 144
18 크롬 개발자 도구 활용팁 황제낙엽 2020.08.18 131
17 크롬 chrome inspect를 활용한 디버깅 file 황제낙엽 2020.05.07 160
16 Android 기기 원격 디버깅 시작하기 황제낙엽 2020.05.07 124
15 구버전 IE 설치하기 (win7의 ie9/10 등등) 황제낙엽 2019.11.27 356
14 크롬 자동업데이트 막기 file 황제낙엽 2019.03.13 208
13 어떻게하면 Edge를 업데이트 할 수 있을까요? file 황제낙엽 2018.08.03 229
12 개발 콘솔창에서 캐시 지우기 file 황제낙엽 2017.06.28 849
11 윈도우용 사파리 개발자 도구 활성화 황제낙엽 2017.02.24 2203
10 IE Conditional Comments 필터링 황제낙엽 2016.10.16 161
9 크롬의 NPAPI 지원 중지에 따른 대안 file 황제낙엽 2015.09.18 1447
8 구글 크롬 자동 업데이트 막기 file 황제낙엽 2015.09.18 703