TTS (Text to Speak) 활용

Ki·2023년 5월 24일
0

Salesforce

목록 보기
1/2
post-thumbnail

22년 8월 즈음에 의료기기 재고관리 시스템 구축 관련하여 문의가 온 사항으로 Salesforce에서
TTS를 사용할 수 있는지 기술 검증이 필요했었다. 구글에서 검색한 몇 몇 Reference를 토대로
예제를 만들어 보았다.

TTS (Text to Speak) 란?

TTS (Text to Speech)는 오디오 표현을 위해 텍스트 단위를 음성 단위로 변경해야하는
자연스러운 언어 모델링 프로세스이며,텍스트 음성 변환은 디지털 텍스트에서 오디오 출력을
렌더링하여 읽을 수 없거나 다른 종류의 용도로 사용하는 사람들을 돕기위한 기술

위에 설명과 같이 TTS는 Text to Speech의 약자로 말 그대로 텍스트를 음성으로 읽어주는 기능
이라고 생각하면 편하다. 의료기기 재고관리 시스템에서는 재고조사를 진행할 때, 스캐너로
해당 제품의 바코드를 찍을 경우, 정보를 Server Client에서 조회하여, 유효기간이 3개월
미만으로 남은 경우, 음성으로 알려주는 기능으로 사용하고자 하였다.

TTS는 여러 API가 존재하였는데, 종류가 생각보다 많았다. Salesforce에서 Reference는 극히
적었기에 그냥 예제로 구글링에서 나온 speechSynthesis를 사용했다.
speechSynthesis는 TTS(Text to speak) 텍스트를 음성으로 변환해주는 Web Speech API 인데
Voice의 경우 언어별로 20개 정도 지원을 하는데 사용자 환경에 따라서 우선순위가
달라져서 사용자 환경에 따라 다르게 나온다.

자세한 내용은 이 곳을 참조하면 된다.
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis

Salesforce Limitation

우선 Salesforce에선 망할 놈의 Lightning Locker 때문에 제약사항이 있다.
LWC는 지원하지 않으며,Aura Component의 경우 API version 39.0에서만 지원한다.
Meta.xml에서 version을 변경하여 사용하자.

JS

if('speechSynthesis' in window){
    let voices = window.speechSynthesis.getVoices(); // 언어별 Voice가 Map 형태로 이루어져 있다.
    let krVoice = [];

    for (let i = 0; i < voices.length; i++) {
        if(voices[i].lang === "ko-KR"){ // Locale을 기준으로 음성의 언어가 표현된다.
            krVoice.push(voices[i]);
          	break;
        }
    }
    console.log(krVoice);
  
	// 해당 부분에 음성으로 변경하고자 하는 텍스트를 입력한다.
    let utterance = new SpeechSynthesisUtterance("유효기간이 삼개월 미만인 제품입니다."); 
    utterance.rate = 0.7; // 음성의 빠르기 
    utterance.pitch = 2; // 피치 조절 값
    utterance.voice = krVoice[0]; // 선택된 보이스 Set
    
    window.speechSynthesis.speak(utterance); // 음성 실행
    
 }else{
	alert('speechSynthesis not supported'); // 지원하지 않을 경우 alert
 }
profile
le monde de ki

0개의 댓글