chrome.ttsEngine

설명

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

권한

ttsEngine

개요

확장은 자체를 음성 엔진으로 등록할 수 있습니다. 이렇게 하면 tts.speaktts.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 매개변수는 선택사항이지만 적극 권장됩니다. 거의 항상 음성은 단일 언어로만 음성을 합성할 수 있습니다. 엔진이 두 개 이상의 언어를 지원하는 경우 각 언어에 대해 별도의 음성을 쉽게 등록할 수 있습니다. 하나의 음성으로 두 개 이상의 언어를 처리할 수 있는 드문 경우, 두 개의 별도 음성을 나열하고 내부적으로 동일한 논리를 사용하여 처리하는 것이 가장 쉽습니다. 하지만 모든 언어로 발화를 처리하는 음성을 만들려면 확장 프로그램의 매니페스트에서 lang 매개변수를 생략하세요.

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

로드되면 확장 프로그램은 chrome.ttsEngine.updateVoices를 호출하여 선언된 음성 목록을 바꿀 수 있습니다. (updateVoices에 대한 프로그래매틱 호출에 사용되는 매개변수는 카멜 표기법입니다. 예를 들어 voice_name을 사용하는 매니페스트 파일과 달리 voiceName입니다.)

전송할 수 있는 이벤트 유형은 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비트 부호 있는 부동(즉, JavaScript의 Float32Array 유형)으로 인코딩되어야 합니다.

  • charIndex

    number(숫자) 선택사항

    이 오디오 버퍼와 연결된 문자 색인입니다.

  • isLastBuffer

    불리언 선택사항

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

AudioStreamOptions

Chrome 92 이상

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

속성

  • bufferSize

    숫자

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

  • sampleRate

    숫자

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

LanguageInstallStatus

Chrome 132 이상

음성의 설치 상태입니다.

열거형

"notInstalled"

"installing"

"installed"

'failed'

LanguageStatus

Chrome 132 이상

언어의 설치 상태입니다.

속성

  • 오류

    문자열 선택사항

    설치 실패에 관한 세부정보입니다. 언어를 설치하지 못한 경우 선택적으로 채워집니다.

  • installStatus

    설치 상태입니다.

  • lang

    문자열

    언어 코드-지역 코드 형식의 언어 문자열입니다. 지역은 생략될 수 있습니다. 예를 들어 en, en-AU, zh-CH가 있습니다.

LanguageUninstallOptions

Chrome 132 이상

특정 언어를 제거하는 옵션입니다.

속성

  • uninstallImmediately

    부울

    TTS 클라이언트가 언어를 즉시 제거하기 원하는 경우 true입니다. 엔진은 이 매개변수와 요청자 정보를 기반으로 언어를 제거할지 여부와 시기를 선택할 수 있습니다. false인 경우 최근 사용량과 같은 다른 기준을 사용하여 제거 시기를 결정할 수 있습니다.

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입니다.

TtsClient

Chrome 131 이상

상태를 요청하는 클라이언트의 식별자입니다.

속성

  • id

    문자열

    언어 관리 요청을 하는 클라이언트입니다. 확장 프로그램의 경우 고유 확장 프로그램 ID입니다. Chrome 기능의 경우 사람이 읽을 수 있는 기능 이름입니다.

  • 요청자 유형입니다.

TtsClientSource

Chrome 131 이상

요청자 유형입니다.

열거형

"chromefeature"

"extension"

VoiceGender

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

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

열거형

'male'

"female"

메서드

updateLanguage()

Chrome 132 이상
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

언어 설치가 시도될 때와 언어가 제거될 때 엔진에 의해 호출됩니다. 클라이언트의 상태 요청에 대한 응답으로도 호출됩니다. 음성이 설치되거나 제거되면 엔진은 ttsEngine.updateVoices를 호출하여 음성을 등록해야 합니다.

매개변수

updateVoices()

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

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

매개변수

  • 목소리

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

이벤트

onInstallLanguageRequest

Chrome 131 이상
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

TTS 클라이언트가 새 언어 설치를 요청할 때 발생합니다. 엔진은 언어를 다운로드하고 설치하려고 시도해야 하며 결과와 함께 ttsEngine.updateLanguage를 호출해야 합니다. 성공하면 엔진은 ttsEngine.updateVoices를 호출하여 새로 사용 가능한 음성을 등록해야 합니다.

매개변수

  • callback

    함수

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

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

Chrome 132 이상
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

TTS 클라이언트가 언어의 설치 상태를 요청할 때 발생합니다.

매개변수

  • callback

    함수

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

    (requestor: TtsClient, lang: string) => void

onPause

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

선택사항: 엔진이 일시중지 이벤트를 지원하는 경우 다시 시작 이벤트나 중지 이벤트를 수신할 때까지 말하고 있는 현재 발화가 있으면 일시중지해야 합니다. 중지 이벤트는 일시중지 상태도 지워야 합니다.

매개변수

  • callback

    함수

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

    () => void

onResume

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

선택사항: 엔진이 일시중지 이벤트를 지원하는 경우 현재 발화가 있는 경우 이를 계속 말하기 위해 재개 이벤트도 지원해야 합니다. 중지 이벤트는 일시중지 상태도 지워야 합니다.

매개변수

  • callback

    함수

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

    () => void

onSpeak

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

사용자가 tts.speak()를 호출하고 이 확장 프로그램의 매니페스트에 있는 음성 중 하나가 옵션 객체와 가장 먼저 일치할 때 호출됩니다.

매개변수

  • callback

    함수

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

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

    • 발화

      문자열

    • 옵션
    • sendTtsEvent

      함수

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

      (event: tts.TtsEvent) => void

      • 이벤트

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

onSpeakWithAudioStream

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

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

매개변수

  • callback

    함수

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

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

    • 발화

      문자열

    • 옵션
    • 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

    함수

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

    () => void

onUninstallLanguageRequest

Chrome 132 이상
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

TTS 클라이언트가 더 이상 언어가 필요하지 않다고 나타낼 때 발생합니다.

매개변수