설명
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'
이벤트는 음성 엔진에서 전송되지 않습니다. Kubernetes는
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
배열 버퍼
텍스트 음성 변환 엔진의 오디오 버퍼입니다. 오디오 스트림 옵션은 정확히 audioStreamOptions.bufferSize가 길고, audioStreamOptions.sampleRate에서 모노로 인코딩되고, 선형 pcm, 32비트 부호 있는 부동 소수점 수(자바스크립트의 Float32Array 유형)로 인코딩되어야 합니다.
-
charIndex
숫자 선택사항
이 오디오 버퍼와 연결된 문자 색인입니다.
-
isLastBuffer
불리언 선택사항
이 오디오 버퍼가 말하는 텍스트의 마지막인 경우 true입니다.
AudioStreamOptions
엔진에서 생성될 것으로 예상되는 오디오 스트림 형식을 포함합니다.
속성
-
bufferSize
숫자
오디오 버퍼 내의 샘플 수입니다.
-
sampleRate
숫자
오디오 버퍼에서 예상되는 샘플링 레이트입니다.
SpeakOptions
tts.speak() 메서드에 지정된 옵션입니다.
속성
-
gender
VoiceGender (선택사항)
<ph type="x-smartling-placeholder"></ph> 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이 가장 높으며 기본값은 1.0입니다.
VoiceGender
성별은 지원 중단되었으며 무시됩니다.
열거형
"남성"
"여성"
메서드
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
음성 목록을 업데이트하기 위해 엔진에서 호출합니다. 이 목록은 이 확장 프로그램의 매니페스트에 선언된 모든 음성보다 우선 적용됩니다.
매개변수
-
목소리
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
-
발화
문자열
-
옵션
-
sendTtsEvent
함수
sendTtsEvent
매개변수는 다음과 같습니다.(event: tts.TtsEvent) => void
-
event
이 발화의 상태를 나타내는 텍스트 음성 변환 엔진의 이벤트입니다.
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
사용자가 tts.speak()를 호출하고 이 확장 프로그램의 매니페스트 음성 중 하나가 옵션 객체와 가장 먼저 일치할 때 호출됩니다. ttsEngine.onSpeak와는 다른 점은 Chrome이 오디오 재생 서비스를 제공하고 tts 이벤트 전달을 처리한다는 점입니다.
매개변수
-
콜백
함수
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