텍스트 읽어주기 & 음성 입력

브라우저에 내장된 Web Speech API를 이용해 원하는 음성, 속도, 음높이로 어떤 텍스트든 소리 내어 읽어주거나, 말하는 내용을 곧바로 텍스트로 받아쓸 수 있습니다.

조회수 226회

텍스트 음성 변환

완전히 로컬 처리: 텍스트와 생성된 오디오는 이 기기를 벗어나지 않습니다.


음성 입력 (음성을 텍스트로)

"듣기 시작"을 누르고 말하세요 — 여기에 텍스트가 표시됩니다…

참고: 이 사이트의 다른 도구와 달리, 이 기능은 마이크 오디오를 텍스트로 변환하기 위해 보통 클라우드 음성 인식 서비스(Chrome에서는 대개 Google 서비스)로 전송합니다.

하나의 도구에 담긴 서로 다른 두 가지 음성 API

이 도구는 Web Speech API를 기반으로 하지만, 이 하나의 이름은 사실 서로 전혀 다르게 동작하는 두 개의 하위 API를 포함합니다. SpeechSynthesis — "읽어주기" 부분 — 는 운영체제나 브라우저에 이미 설치된 음성 엔진을 사용하여 입력한 텍스트를 오디오로 변환합니다. 이는 전적으로 사용자의 기기에서 실행됩니다: 어떤 텍스트도 업로드되지 않고, 어떤 오디오도 원격에서 생성되지 않으며, 입력한 내용이 기기를 벗어나는 일은 결코 없습니다. SpeechRecognition — "음성 입력" 부분 — 는 그 반대 작업을 수행하여 말한 목소리를 텍스트로 변환하며, 아래에서 설명하듯 내부적으로는 매우 다르게 동작합니다.

읽어주기 기능의 음성 목록은 speechSynthesis.getVoices() 호출로 채워지지만, 이 목록은 종종 비동기로 로드됩니다 — 페이지를 처음 불러올 때 실제로는 음성이 존재하더라도 목록이 비어 있는 상태로 반환될 수 있는데, 브라우저가 아직 백그라운드에서 운영체제에 설치된 음성 목록을 열거하는 중이기 때문입니다. 이 도구는 onvoiceschanged 이벤트를 감지하여 실제 목록이 준비되는 즉시 드롭다운을 새로고침합니다. 이는 많은 단순한 구현을 헷갈리게 만드는 Web Speech API의 잘 알려진 특성에 대한 표준적인 해결책입니다.

받아쓰기 전에 꼭 읽어야 할 개인정보 보호 참고 사항

이 사이트의 대부분의 도구는 모든 처리를 로컬에서 수행하며 서버에 전혀 접근하지 않습니다 — 여기서 텍스트를 음성으로 변환하는 부분도 마찬가지입니다. 음성을 텍스트로 변환하는 기능은 예외이며, 이를 미리 명확히 밝히는 것이 중요합니다: Chrome 및 대부분의 Chromium 기반 브라우저에서 SpeechRecognition은 일반적으로 녹음된 오디오를 클라우드 음성 인식 서비스(대개 Google의 서비스)로 전송하여 전사한 뒤, 결과 텍스트를 페이지로 반환합니다. 사용자의 목소리가 기기를 벗어나게 됩니다. 받아쓰는 내용이 민감하다면, 마이크를 다른 클라우드 받아쓰기 서비스와 동일하게 취급하시기 바랍니다.

받아쓰기에 대한 브라우저 지원 또한 알아둘 만한 방식으로 파편화되어 있습니다. Chrome과 Edge는 여전히 표준화된 단순한 생성자 대신 벤더 접두사가 붙은 webkitSpeechRecognition 생성자를 요구합니다. Firefox는 기본적으로 꺼져 있는 실험적 플래그 뒤에 부분적인 지원만 제공하며, Safari의 지원은 버전마다 제한적이고 일관되지 않습니다 — 그래서 브라우저가 이 API를 전혀 제공하지 않을 경우, 이 도구는 조용히 실패하는 폼을 표시하는 대신 받아쓰기 섹션을 숨깁니다.

  • 텍스트 음성 변환(읽어주기): 완전히 로컬에서 실행되며, 네트워크 요청이 없고, 사실상 모든 최신 브라우저에서 작동합니다
  • 음성 텍스트 변환(받아쓰기): 마이크 권한이 필요하며, 보통 클라우드에서 처리되고, 주로 Chrome/Edge에서 안정적으로 작동합니다
  • 사용 가능한 음성은 전적으로 운영체제에 따라 달라집니다 — Windows, macOS, Android는 각각 서로 다른 음성 엔진과 음성 목록을 제공합니다

자주 묻는 질문

텍스트 읽어주기 기능이 제 텍스트를 서버로 전송하나요?

아니요. SpeechSynthesis는 운영체제에 이미 설치된 음성 엔진을 사용하여 전적으로 브라우저 안에서 동작합니다. 입력한 내용은 텍스트든 생성된 오디오든 어디로도 업로드되지 않습니다. 페이지가 로드된 후 인터넷 연결을 끊더라도 읽어주기 기능은 정상적으로 계속 작동합니다. 음성을 생성하기 위해 원격에서 아무것도 가져오지 않기 때문입니다.

음성 입력(음성을 텍스트로 변환) 기능이 제 목소리를 서버로 전송하나요?

대부분의 브라우저에서는 그렇습니다 — 사용하기 전에 알아두면 좋습니다. Chrome의 SpeechRecognition 구현은 일반적으로 마이크 오디오를 클라우드 전사 서비스(대개 Google의 서비스)로 스트리밍하여 텍스트로 변환한 뒤 결과를 페이지로 반환합니다. 이는 기기를 절대 벗어나지 않는 이 도구의 읽어주기 기능과는 근본적으로 다릅니다. 민감한 내용을 받아쓰는 경우, 다른 클라우드 기반 음성 비서를 사용할 때와 동일하게 유의하시기 바랍니다.

이 도구를 처음 열었을 때 음성 드롭다운이 비어 있는 이유는 무엇인가요?

이는 이 도구의 버그가 아니라 Web Speech API의 잘 알려진 특성입니다. 브라우저는 설치된 음성 목록을 비동기로 로드하므로, 페이지가 로드되자마자 getVoices()를 호출하면 실제로 음성이 있어도 빈 배열이 반환될 수 있습니다. 이 도구는 onvoiceschanged 이벤트를 감지하여 실제 목록이 준비되는 즉시 드롭다운을 자동으로 다시 채웁니다. 이는 이러한 동작에 대한 표준적인 해결 방법입니다.

Firefox나 Safari에서 음성 입력 섹션이 보이지 않는 이유는 무엇인가요?

SpeechRecognition에 대한 브라우저 지원은 고르지 않습니다. Chrome과 Edge는 여전히 접두사가 붙은 webkitSpeechRecognition 생성자를 통해서이긴 하지만 안정적으로 지원합니다. Firefox는 기본적으로 꺼져 있는 실험적 플래그 뒤에 부분적인 지원만 제공하며, Safari의 지원은 버전마다 제한적이고 불안정합니다. 이 도구는 조용히 실패하는 받아쓰기 폼을 표시하는 대신 API가 존재하는지 감지하여, 존재하지 않으면 정직한 메시지와 함께 해당 섹션을 숨깁니다 — 완전한 음성 입력 경험을 위해서는 Chrome이나 Edge를 사용해 보세요.

다른 컴퓨터에서는 선택할 수 있는 음성이 다르게 보이는 이유는 무엇인가요?

읽어주기 기능은 자체 음성을 내장하고 있지 않으며, 운영체제와 브라우저가 제공하는 음성 엔진을 사용하는데, 이는 환경마다 크게 다릅니다. Windows, macOS, Android는 각각 서로 다른 음성 이름, 언어, 억양을 가진 서로 다른 텍스트 음성 변환 엔진을 탑재하고 있어, 동일한 웹페이지라도 두 대의 다른 기기에서는 완전히 다른 음성 목록을 제공할 수 있습니다. 이는 웹페이지 쪽에서 표준화할 방법이 없으며, 전적으로 로컬에 무엇이 설치되어 있는지에 따라 결정됩니다.

댓글

아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!

비슷한 도구