설명
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
매개변수는 선택사항이지만 사용하는 것이 좋습니다. 거의 항상 음성은 단일 언어로만 음성을 합성할 수 있습니다. 엔진이 두 개 이상의 언어를 지원하는 경우 언어별로 별도의 음성을 쉽게 등록할 수 있습니다. 단일 음성으로 두 개 이상의 언어를 처리할 수 있는 드문 상황에서는 두 개의 개별 음성을 나열하고 내부적으로 동일한 로직을 사용하여 처리하는 것이 가장 쉽습니다. 그러나 모든 언어의 발화를 처리하는 음성을 만들려면 확장 프로그램 매니페스트에서 lang
매개변수를 제외합니다.
마지막으로 엔진이 음성 합성 진행 상황을 클라이언트에게 업데이트하는 이벤트를 전송할 수 있는 경우 event_types
매개변수가 필요합니다. 최소한 'end'
이벤트 유형을 지원하여 음성이 완료되었음을 나타내는 것이 좋습니다. 그러지 않으면 Chrome에서 대기열에 추가된 발화를 예약할 수 없습니다.
확장 프로그램은 로드된 후 chrome.ttsEngine.updateVoices
를 호출하여 선언된 음성 목록을 대체할 수 있습니다. (updateVoices
의 프로그래매틱 호출에 사용되는 매개변수는 카멜케이스(예: voiceName
를 사용합니다.)voice_name
전송할 수 있는 이벤트 유형은 speak()
메서드가 수신하는 이벤트 유형에 해당합니다.
'start'
: 엔진이 발화를 시작했습니다.'word'
: 단어 경계에 도달했습니다.event.charIndex
를 사용하여 현재 음성 위치를 확인합니다.'sentence'
: 문장 경계에 도달했습니다.event.charIndex
를 사용하여 현재 음성 위치를 확인합니다.'marker'
: SSML 마커에 도달했습니다.event.charIndex
를 사용하여 현재 음성 위치를 확인합니다.'end'
: 엔진이 발화를 완료했습니다.'error'
: 엔진 관련 오류가 발생하여 이 발화를 말할 수 없습니다.event.errorMessage
에 추가 정보를 전달합니다.
'interrupted'
및 'cancelled'
이벤트는 음성 엔진에서 전송하지 않으며 Chrome에서 자동으로 생성됩니다.
텍스트 음성 변환 클라이언트는 아래에 설명된 대로 음성 이벤트 리스너를 등록한 경우 tts.getVoices
를 호출하여 확장 프로그램의 매니페스트에서 음성 정보를 가져올 수 있습니다.
음성 이벤트 처리
클라이언트의 요청에 따라 음성을 생성하려면 확장 프로그램이 다음과 같이 onSpeak
및 onStop
모두에 리스너를 등록해야 합니다.
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);
특정 음성 요청을 확장 프로그램으로 전송할지 여부는 확장 프로그램이 매니페스트에서 특정 음성 매개변수를 지원하고 onSpeak
및 onStop
의 리스너를 등록했는지에 따라 전적으로 결정됩니다. 즉, 확장 프로그램이 음성 요청을 수신하고 이를 처리할지 동적으로 결정할 방법이 없습니다.
유형
AudioBuffer
오디오 버퍼 및 관련 데이터가 포함된 매개변수입니다.
속성
-
audioBuffer
ArrayBuffer
텍스트 음성 변환 엔진의 오디오 버퍼입니다. 길이는 정확히 audioStreamOptions.bufferSize여야 하며, audioStreamOptions.sampleRate에서 모노로, 선형 PCM, 32비트 부호 있는 부동 소수점 수(예: JavaScript의 Float32Array 유형)로 인코딩되어야 합니다.
-
charIndex
번호 선택사항
이 오디오 버퍼와 연결된 문자 색인입니다.
-
isLastBuffer
불리언 선택사항
이 오디오 버퍼가 음성으로 재생되는 텍스트의 마지막 버퍼인 경우 true입니다.
AudioStreamOptions
엔진에서 생성할 것으로 예상되는 오디오 스트림 형식을 포함합니다.
속성
-
bufferSize
숫자
오디오 버퍼 내 샘플 수입니다.
-
sampleRate
숫자
오디오 버퍼에서 예상되는 샘플링 레이트입니다.
LanguageInstallStatus
음성의 설치 상태입니다.
열거형
'notInstalled'
'설치 중'
'설치됨'
'실패'
LanguageStatus
언어의 설치 상태입니다.
속성
-
오류
문자열 선택사항
설치 실패에 관한 세부정보입니다. 언어를 설치할 수 없는 경우 선택적으로 채워집니다.
-
installStatus
설치 상태입니다.
-
lang
문자열
언어 코드-지역 코드 형식의 언어 문자열로, 지역은 생략될 수 있습니다. en, en-AU, zh-CH 등이 여기에 해당합니다.
LanguageUninstallOptions
특정 언어를 제거하는 옵션입니다.
속성
-
uninstallImmediately
부울
TTS 클라이언트가 언어를 즉시 제거하려는 경우 true입니다. 엔진은 이 매개변수와 요청자 정보를 기반으로 언어를 제거할지 여부와 제거 시기를 선택할 수 있습니다. false인 경우 최근 사용과 같은 다른 기준을 사용하여 제거 시점을 결정할 수 있습니다.
SpeakOptions
tts.speak() 메서드에 지정된 옵션입니다.
속성
-
gender
VoiceGender 선택사항
Chrome 92부터 지원 중단됨성별은 지원 중단되었으며 무시됩니다.
합성된 음성의 성별입니다.
-
lang
문자열 선택사항
합성에 사용할 언어로, language-region 형식입니다. 예: 'en', 'en-US', 'en-GB', 'zh-CN'
-
투구
번호 선택사항
말하기 피치로, 0과 2 사이(양 끝값 포함)이며 0이 가장 낮고 2가 가장 높습니다. 1.0은 이 음성의 기본 피치에 해당합니다.
-
요금
번호 선택사항
이 음성의 기본 속도에 대한 상대적 말하기 속도입니다. 1.0은 기본 속도로, 일반적으로 분당 약 180~220단어입니다. 2.0은 기본 속도의 2배이며 0.5는 절반입니다. 이 값은 0.1~10.0 사이(양 끝값 포함)입니다. 음성이 이 전체 속도 범위를 지원하지 않는 경우 오류를 반환하지 마세요. 대신 음성이 지원하는 범위로 속도를 자릅니다.
-
voiceName
문자열 선택사항
합성에 사용할 음성의 이름입니다.
-
볼륨
번호 선택사항
말하는 볼륨으로, 0과 1 사이(0이 가장 낮고 1이 가장 높음)이며 기본값은 1.0입니다.
TtsClient
상태를 요청하는 클라이언트의 식별자입니다.
속성
-
id
문자열
언어 관리 요청을 하는 클라이언트 확장 프로그램의 경우 고유한 확장 프로그램 ID입니다. Chrome 기능의 경우 사람이 읽을 수 있는 기능 이름입니다.
-
source
요청자 유형입니다.
TtsClientSource
요청자 유형입니다.
열거형
"chromefeature"
"extension"
VoiceGender
성별은 지원 중단되었으며 무시됩니다.
열거형
'남성'
'female'
메서드
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
)
언어 설치를 시도할 때와 언어를 제거할 때 엔진에서 호출합니다. 클라이언트의 상태 요청에 대한 응답으로 호출되기도 합니다. 음성이 설치되거나 제거될 때 엔진은 ttsEngine.updateVoices를 호출하여 음성을 등록해야 합니다.
매개변수
-
언어의 설치 상태입니다.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
엔진에서 음성 목록을 업데이트하기 위해 호출합니다. 이 목록은 이 확장 프로그램의 매니페스트에 선언된 모든 음성을 재정의합니다.
매개변수
-
목소리
TtsVoice[]
음성 합성에 사용할 수 있는 음성을 나타내는
tts.TtsVoice
객체의 배열입니다.
이벤트
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
TTS 클라이언트가 새 언어 설치를 요청할 때 실행됩니다. 엔진은 언어를 다운로드하고 설치하려고 시도하고 결과를 사용하여 ttsEngine.updateLanguage를 호출해야 합니다. 성공하면 엔진은 ttsEngine.updateVoices를 호출하여 새로 사용 가능한 음성을 등록해야 합니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.(requestor: TtsClient, lang: string) => void
-
요청자
-
lang
문자열
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
TTS 클라이언트가 언어의 설치 상태를 요청할 때 실행됩니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.(requestor: TtsClient, lang: string) => void
-
요청자
-
lang
문자열
-
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
-
발화
문자열
-
옵션
-
sendTtsEvent
함수
sendTtsEvent
매개변수는 다음과 같습니다.(event: tts.TtsEvent) => void
-
event
이 발화의 상태를 나타내는 텍스트 음성 변환 엔진의 이벤트입니다.
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
사용자가 tts.speak()를 호출하고 이 확장 프로그램 매니페스트의 음성 중 하나가 옵션 객체와 가장 먼저 일치할 때 호출됩니다. Chrome이 오디오 재생 서비스를 제공하고 tts 이벤트 전달을 처리한다는 점에서 ttsEngine.onSpeak와 다릅니다.
매개변수
-
콜백
함수
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
매개변수는 다음과 같습니다.() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
TTS 클라이언트가 언어가 더 이상 필요하지 않다고 표시할 때 실행됩니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
요청자
-
lang
문자열
-
uninstallOptions
-