chrome.tts (original) (raw)

설명

chrome.tts API를 사용하여 합성된 텍스트 음성 변환 (TTS)을 재생합니다. 확장 프로그램이 음성 엔진을 구현할 수 있도록 지원하는 관련 ttsEngine API도 참고하세요.

Chrome은 운영체제에서 제공하는 음성 합성 기능을 사용하여 Windows (SAPI 5 사용), Mac OS X, ChromeOS에서 이 기능을 제공합니다. 모든 플랫폼에서 사용자는 대체 음성 엔진으로 등록되는 확장 프로그램을 설치할 수 있습니다.

권한

tts

개념 및 사용

음성 생성

확장에서 speak()를 호출하여 말합니다. 예를 들면 다음과 같습니다.

chrome.tts.speak('Hello, world.');

즉시 말하기를 중지하려면 stop()를 호출하면 됩니다.

chrome.tts.stop();

속도, 음높이 등 음성의 다양한 속성을 제어하는 옵션을 제공할 수 있습니다. 예를 들면 다음과 같습니다.

chrome.tts.speak('Hello, world.', {'rate': 2.0});

해당 언어(및 지역 방언(해당하는 경우))를 지원하는 합성기가 선택되도록 언어를 지정하는 것도 좋습니다.

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

기본적으로 speak()에 대한 각 호출은 진행 중인 음성을 중단하고 즉시 말합니다. 통화로 인해 방해되는 항목이 있는지 확인하려면 isSpeaking()를 호출하면 됩니다. 또한 enqueue 옵션을 사용하여 현재 발화가 완료되면 발화될 발화 대기열에 이 발화를 추가할 수 있습니다.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

모든 옵션에 대한 자세한 설명은 tts.speak()에서 확인할 수 있습니다. 일부 음성 엔진은 일부 옵션을 지원하지 않습니다.

오류를 포착하고 speak()를 올바르게 호출하려면 인수를 사용하지 않는 콜백 함수를 전달하세요. 콜백 내부에서 runtime.lastError를 확인하여 오류가 있는지 확인합니다.

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

콜백은 엔진이 음성 생성을 시작하기 전에 바로 반환됩니다. 콜백의 목적은 음성 합성 및 출력 과정에서 발생할 수 있는 모든 오류를 포착하는 것이 아니라 TTS API 사용 시의 구문 오류를 알리는 것입니다. 이러한 오류도 포착하려면 다음 섹션에 설명된 이벤트 리스너를 사용해야 합니다.

이벤트 수신 대기

합성된 음성의 상태에 관한 실시간 정보를 더 많이 가져오려면 다음과 같이 speak()의 옵션에 이벤트 리스너를 전달하세요.

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

각 이벤트에는 이벤트 유형, 발화와 관련된 현재 음성의 문자 색인, 오류 이벤트의 경우 선택적 오류 메시지가 포함됩니다. 이벤트 유형은 다음과 같습니다.

이벤트 유형 중 'end', 'interrupted', 'cancelled', 'error'의 4가지 유형은 _final_입니다. 이러한 이벤트 중 하나가 수신되면 이 발화는 더 이상 말하지 않으며 이 발화의 새 이벤트가 수신되지 않습니다.

일부 음성은 모든 이벤트 유형을 지원하지 않을 수 있으며 일부 음성은 이벤트를 전혀 전송하지 않을 수 있습니다. 특정 이벤트를 전송하지 않는 한 음성을 사용하지 않으려면 옵션 객체의 requiredEventTypes 멤버에 필요한 이벤트를 전달하거나 getVoices()을 사용하여 요구사항을 충족하는 음성을 선택하세요. 두 가지 모두 아래에 설명되어 있습니다.

SSML 마크업

이 API에서 사용되는 발화에는 음성 합성 마크업 언어(SSML)를 사용한 마크업이 포함될 수 있습니다. SSML을 사용하는 경우 speak()의 첫 번째 인수는 문서 프래그먼트가 아닌 XML 헤더와 최상위 <speak> 태그가 있는 완전한 SSML 문서여야 합니다.

예를 들면 다음과 같습니다.

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

모든 음성 엔진이 모든 SSML 태그를 지원하는 것은 아니며 일부는 SSML을 전혀 지원하지 않을 수도 있지만, 모든 엔진은 지원하지 않는 SSML을 무시하고 기본 텍스트를 계속 말해야 합니다.

음성 선택

기본적으로 Chrome은 언어에 따라 말하려는 각 발화에 가장 적합한 음성을 선택합니다. 대부분의 Windows, Mac OS X, ChromeOS 시스템에서 운영체제에서 제공하는 음성 합성 기능은 하나 이상의 언어로 텍스트를 말할 수 있어야 합니다. 일부 사용자는 운영체제와 다른 Chrome 확장 프로그램에서 구현한 음성 엔진에서 다양한 음성을 사용할 수 있습니다. 이 경우 맞춤 코드를 구현하여 적절한 음성을 선택하거나 사용자에게 선택 목록을 표시할 수 있습니다.

모든 음성의 목록을 가져오려면 getVoices()를 호출하고 TtsVoice 객체의 배열을 인수로 받는 함수를 전달합니다.

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

유형

EventType

열거형

"시작"

"end"

'word'

'sentence'

'marker'

"interrupted"

'cancelled'

'error'

'pause'

'resume'

TtsEvent

TTS 엔진에서 발화 상태를 전달하는 이벤트입니다.

속성

TtsOptions

TTS 엔진의 음성 옵션입니다.

속성

TtsVoice

음성 합성에 사용할 수 있는 음성에 대한 설명입니다.

속성

VoiceGender

Chrome 54 이상 Chrome 70부터 지원 중단됨

성별은 지원 중단되었으며 무시됩니다.

열거형

메서드

getVoices()

chrome.tts.getVoices(): Promise<TtsVoice[]>

사용 가능한 모든 음성의 배열을 가져옵니다.

반환 값

isSpeaking()

chrome.tts.isSpeaking(): Promise

엔진이 현재 말하고 있는지 확인합니다. Mac OS X에서는 Chrome에서 음성 지원을 시작하지 않았더라도 시스템 음성 엔진이 말하고 있으면 결과가 true입니다.

반환 값

pause()

chrome.tts.pause(): void

발화 중간에 음성 합성을 일시중지합니다. 다시 시작 또는 중지 호출은 음성을 일시중지 해제합니다.

resume()

chrome.tts.resume(): void

음성이 일시중지된 경우 중단된 지점부터 음성을 다시 시작합니다.

speak()

chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
): Promise

텍스트 음성 변환 엔진을 사용하여 텍스트를 말합니다.

매개변수

반환 값

stop()

chrome.tts.stop(): void

현재 음성을 중지하고 대기 중인 발화의 대기열을 플러시합니다. 또한 음성이 일시중지된 경우 다음 호출에서 말할 수 있도록 일시중지가 해제됩니다.

이벤트

onVoicesChanged

chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

getVoices에서 반환되는 tts.TtsVoice 목록이 변경될 때 호출됩니다.

매개변수