chrome.ttsEngine

설명

chrome.ttsEngine API를 사용하여 확장 프로그램을 통해 텍스트 음성 변환(TTS) 엔진을 구현합니다. 확장 프로그램이 이 API를 사용하여 등록하면 확장 프로그램 또는 Chrome 앱이 tts API를 사용하여 음성을 생성할 때 말할 발화 및 기타 매개변수가 포함된 이벤트를 수신합니다. 그러면 확장 프로그램에서 사용 가능한 웹 기술을 사용하여 음성을 합성 및 출력하고 이벤트를 호출 함수로 다시 전송하여 상태를 보고할 수 있습니다.

권한

ttsEngine

개념 및 사용법

확장 프로그램은 자신을 음성 엔진으로 등록할 수 있습니다. 이렇게 하면 tts.speak()tts.stop()과 같은 함수 호출의 일부 또는 전부를 가로채 대체 구현을 제공할 수 있습니다. 확장 프로그램은 사용 가능한 모든 웹 기술을 사용하여 서버의 오디오 스트리밍, HTML5 오디오 등 음성을 제공할 수 있습니다. 확장 프로그램은 팝업에 자막을 표시하거나 원격 서버에 로그 메시지로 전송하는 등 발화와 다른 작업을 수행할 수도 있습니다.

TTS 엔진을 구현하려면 확장 프로그램이 'ttsEngine' 권한을 선언한 후 다음과 같이 확장 프로그램 매니페스트에서 제공하는 모든 음성을 선언해야 합니다.

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

확장 프로그램에서 지정할 수 있는 음성의 수에는 제한이 없습니다.

voice_name 매개변수는 필수 항목입니다. 이름은 사용된 음성 및 엔진을 식별할 수 있을 만큼 충분히 설명적이어야 합니다. 드물지만 두 확장 프로그램이 동일한 이름의 음성을 등록하는 경우 클라이언트는 합성을 실행해야 하는 확장 프로그램의 ID를 지정할 수 있습니다.

lang 매개변수는 선택사항이지만 사용하는 것이 좋습니다. 대부분의 경우 음성은 하나의 언어로 음성을 합성합니다. 엔진이 2개 이상의 언어를 지원하는 경우 각 언어에 별도의 음성을 쉽게 등록할 수 있습니다. 단일 음성이 두 개 이상의 언어를 처리할 수 있는 드문 경우에는 두 개의 개별 음성을 나열하고 내부적으로 동일한 로직을 사용하여 이를 처리하는 것이 가장 쉽습니다. 그러나 모든 언어의 발화를 처리하는 음성을 만들려면 확장 프로그램의 매니페스트에서 lang 매개변수를 제거합니다.

마지막으로, 엔진이 음성 합성 진행 상황에 관한 클라이언트를 업데이트할 수 있는 이벤트를 전송할 수 있는 경우 event_types 매개변수가 필요합니다. 적어도 음성이 끝난 시점을 나타내는 'end' 이벤트 유형을 지원하는 것이 좋습니다. 그러지 않으면 Chrome에서 대기 중인 발화를 예약할 수 없습니다.

로드되면 확장 프로그램은 chrome.ttsEngine.updateVoices를 호출하여 선언된 음성 목록을 대체할 수 있습니다. updateVoices에 대한 프로그래매틱 호출에 사용되는 매개변수는 카멜 표기법을 사용합니다(예: voiceNamevoice_name를 사용하는 매니페스트 파일과 다릅니다.)

전송할 수 있는 이벤트 유형은 speak() 메서드가 수신하는 이벤트 유형에 해당합니다.

  • 'start': 엔진이 발화를 말하기 시작했습니다.
  • 'word': 단어 경계에 도달했습니다. event.charIndex를 사용하여 현재 음성 위치를 확인합니다.
  • 'sentence': 문장 경계에 도달했습니다. event.charIndex를 사용하여 현재 음성 위치를 확인합니다.
  • 'marker': SSML 마커에 도달했습니다. event.charIndex를 사용하여 현재 음성 위치를 확인합니다.
  • 'end': 엔진이 발화 말하기를 완료했습니다.
  • 'error': 엔진 관련 오류가 발생하여 이 발화를 말할 수 없습니다. event.errorMessage에 추가 정보를 전달합니다.

'interrupted''cancelled' 이벤트는 음성 엔진에서 전송되지 않고 Chrome에서 자동으로 생성됩니다.

텍스트 음성 변환 클라이언트는 아래에 설명된 대로 음성 이벤트 리스너를 등록했다고 가정하고 tts.getVoices를 호출하여 확장 프로그램의 매니페스트에서 음성 정보를 가져올 수 있습니다.

음성 이벤트 처리

클라이언트 요청 시 음성을 생성하려면 확장 프로그램이 다음과 같이 onSpeakonStop의 리스너를 모두 등록해야 합니다.

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);

확장 프로그램에 지정된 음성 요청을 전송할지 여부는 확장 프로그램이 매니페스트에서 지정된 음성 매개변수를 지원하고 onSpeakonStop에 등록된 리스너를 가지고 있는지 여부에만 기반합니다. 즉, 확장 프로그램이 음성 요청을 수신하고 처리 여부를 동적으로 결정할 방법이 없습니다.

유형

AudioBuffer

Chrome 92 이상

오디오 버퍼 및 관련 데이터를 포함하는 매개변수입니다.

속성

  • audioBuffer

    ArrayBuffer

    텍스트 음성 변환 엔진의 오디오 버퍼입니다. 길이는 정확히 audioStreamOptions.bufferSize여야 하며, audioStreamOptions.sampleRate에서 모노로 인코딩되고, 선형 pcm, 32비트 부호 있는 부동 소수점으로 인코딩되어야 합니다(자바스크립트의 Float32Array 유형).

  • charIndex

    number 선택사항

    이 오디오 버퍼와 관련된 문자 색인입니다.

  • isLastBuffer

    부울 선택사항

    이 오디오 버퍼가 읽는 텍스트의 마지막인 경우 true입니다.

AudioStreamOptions

Chrome 92 이상

엔진에서 생성될 것으로 예상되는 오디오 스트림 형식을 포함합니다.

속성

  • bufferSize

    숫자

    오디오 버퍼 내의 샘플 수입니다.

  • sampleRate

    숫자

    오디오 버퍼에서 예상되는 샘플링 레이트입니다.

SpeakOptions

Chrome 92 이상

tts.speak() 메서드에 지정된 옵션입니다.

속성

  • gender

    VoiceGender 선택사항

    Chrome 92 이후 지원 중단됨

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

    합성된 음성의 음성 성별입니다.

  • lang

    문자열 선택사항

    합성에 사용할 언어이며 언어-지역 형식입니다. 예: 'en', 'en-US', 'en-GB', 'zh-CN'.

  • 투구

    number 선택사항

    0과 2 사이의 피치를 말합니다. 0이 가장 낮고 2가 가장 높습니다. 1.0은 이 음성의 기본 높낮이에 해당합니다.

  • 요금

    number 선택사항

    이 음성의 기본 속도에 따른 말하기 속도입니다. 1.0이 기본 속도이며 일반적으로 분당 약 180~220단어입니다. 2.0은 기본 속도의 2배이며 0.5는 절반입니다. 이 값은 0.1~10.0(포함)이 보장됩니다. 음성이 이러한 전체 요율 범위를 지원하지 않는 경우 오류를 반환하지 않습니다. 대신 음성이 지원하는 범위에 맞춰 속도를 자르세요.

  • voiceName

    문자열 선택사항

    합성에 사용할 음성의 이름입니다.

  • 볼륨

    number 선택사항

    말하기 볼륨은 0부터 1까지이며 0은 가장 낮고 1은 가장 높고 기본값은 1.0입니다.

VoiceGender

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

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

열거형

방법

updateVoices()

Chrome 66 이상
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

음성 목록을 업데이트하기 위해 엔진에서 호출합니다. 이 목록은 이 확장 프로그램의 매니페스트에 선언된 모든 음성을 재정의합니다.

매개변수

  • 목소리

    음성 합성에 사용할 수 있는 음성을 나타내는 tts.TtsVoice 객체의 배열입니다.

이벤트

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

선택사항: 엔진이 일시중지 이벤트를 지원하는 경우 엔진은 다시 시작 이벤트 또는 중지 이벤트를 수신할 때까지 현재 말하는 음성(있는 경우)을 일시중지해야 합니다. 참고로, 정지 이벤트는 일시중지 상태를 지워야 합니다.

매개변수

  • 콜백

    기능

    callback 매개변수는 다음과 같습니다.

    ()=>void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

선택사항: 엔진이 일시중지 이벤트를 지원하는 경우 재개 이벤트도 지원해야 합니다. 그래야 현재 발화가 있는 경우 계속 말할 수 있습니다. 참고로, 정지 이벤트는 일시중지 상태를 지워야 합니다.

매개변수

  • 콜백

    기능

    callback 매개변수는 다음과 같습니다.

    ()=>void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

사용자가 tts.speak()을 호출하고 이 확장 프로그램의 매니페스트에 있는 음성 중 하나가 첫 번째로 옵션 객체와 일치하는 경우 호출됩니다.

매개변수

  • 콜백

    기능

    callback 매개변수는 다음과 같습니다.

    (utterance: string,options: SpeakOptions,sendTtsEvent: function)=>void

    • 발화

      string

    • 옵션
    • sendTtsEvent

      기능

      sendTtsEvent 매개변수는 다음과 같습니다.

      (event: tts.TtsEvent)=>void

      • event

        이 발화의 상태를 나타내는 텍스트 음성 변환 엔진의 이벤트입니다.

onSpeakWithAudioStream

Chrome 92 이상
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

사용자가 tts.speak()을 호출하고 이 확장 프로그램의 매니페스트에 있는 음성 중 하나가 첫 번째로 옵션 객체와 일치하는 경우 호출됩니다. Chrome이 오디오 재생 서비스를 제공하고 tts 이벤트 전송을 처리한다는 점에서 ttsEngine.onSpeak와 다릅니다.

매개변수

  • 콜백

    기능

    callback 매개변수는 다음과 같습니다.

    (utterance: string,options: SpeakOptions,audioStreamOptions: AudioStreamOptions,sendTtsAudio: function,sendError: function)=>void

    • 발화

      string

    • 옵션
    • audioStreamOptions
    • sendTtsAudio

      기능

      sendTtsAudio 매개변수는 다음과 같습니다.

      (audioBufferParams: AudioBuffer)=>void

      • audioBufferParams

        오디오 버퍼 및 관련 데이터를 포함하는 매개변수입니다.

    • sendError

      기능

      Chrome 94 이상

      sendError 매개변수는 다음과 같습니다.

      (errorMessage?: string)=>void

      • errorMessage

        문자열 선택사항

        오류를 설명하는 문자열입니다.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

tts.stop에 대한 호출이 이루어지며 이 확장 프로그램이 발언 중일 때 발생합니다. 확장 프로그램이 onStop 호출을 수신하고 음성이 이미 중지된 경우 아무 작업도 하지 않아야 합니다 (오류가 발생하지 않음). 음성이 일시중지 상태인 경우 일시중지 상태가 취소되어야 합니다.

매개변수

  • 콜백

    기능

    callback 매개변수는 다음과 같습니다.

    ()=>void