카카오 Tts | 파이썬으로 인공지능 비서 만들기_2) Kakao Openapi 음석인식(Stt) 11572 투표 이 답변

당신은 주제를 찾고 있습니까 “카카오 tts – 파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI 음석인식(STT)“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 생각하는 코딩 이(가) 작성한 기사에는 조회수 3,697회 및 좋아요 40개 개의 좋아요가 있습니다.

카카오 tts 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI 음석인식(STT) – 카카오 tts 주제에 대한 세부정보를 참조하세요

파이썬으로 인공지능 비서 만들기 프로젝트 입니다.
2편. KAKAO OpenAPI 음석인식(STT) 입니다.
(참고) https://ai-creator.tistory.com/70

카카오 tts 주제에 대한 자세한 내용은 여기를 참조하세요.

음성합성 API – Kakao

음성 합성Text-to-Speech system … 고품질의 새로운 TTS 서비스를 경험해 보세요. … Daum; 카카오내비; 카카오맵; 카카오 T; 멜론; 카카오미니; 디벨로퍼스 …

+ 자세한 내용은 여기를 클릭하십시오

Source: speech-api.kakao.com

Date Published: 7/22/2022

View: 4097

[python] 카카오 음성API TTS (feat. Postman)

api key가 남아있는 분들은 아직 실행되는거같아서 글은 남겨둡니다. TTS란 Text To Speech로 카카오에서 텍스트를 음성으로 변환해주는 기술을 제공한다.

+ 여기에 표시

Source: park-duck.tistory.com

Date Published: 8/14/2022

View: 9260

카카오 TTS API 사용하기(Javascript) – velog

간단한 미니 프로젝트를 하면서 텍스트를 음성으로 출력하는 작업이 필요했는데 여러 TTS API 중 카카오의 API가 가장 자연스럽다고 판단하여 카카오 …

+ 여기에 보기

Source: velog.io

Date Published: 4/5/2022

View: 9524

[오픈소스 리뷰기] TTS(Text-to-Speech) 음성합성기술 API 이용 …

이제 직접 코드를 작성하여 카카오 TTS api 를 활용해보겠습니다. import os, requests, json, wave url = “https://kakaoi-newtone-openapi.kakao.com/v1 …

+ 여기에 자세히 보기

Source: www.dinolabs.ai

Date Published: 6/8/2021

View: 2328

[c#]카카오 TTS(음성합성/뉴톤톡) – Moroa Blog

카카오 음성인식, 음성합성이 Beta로 나와 한번 만들어 보았습니다. 네이버Clova 보단 못하지만 Google TTS랑 비교하면 많이 자연스러워 진거 …

+ 자세한 내용은 여기를 클릭하십시오

Source: moroa.tistory.com

Date Published: 6/15/2022

View: 5598

유니티에서 Kakao TTS 사용하기 – 잡동사니

무료이며 REST API를 제공해주는 Kakao TTS 서비스를 찾게 되었다. … Networking; // 카카오 서비스에서 제공하는 음성타입 public enum …

+ 여기에 표시

Source: crynet.tistory.com

Date Published: 11/16/2022

View: 7438

Kakao TTS > 기타프로그램

(TTS). 카카오AI를 이용하여 문자를 음성파일로 변환해 주는 프로그램 입니다. 변환할 파일을 저장할 위치 및 파일명을 지정 합니다. ▷ 저장 :.

+ 여기를 클릭

Source: gaianetworks.co.kr

Date Published: 2/8/2022

View: 863

카카오 음성합성, 음성인식 – Raspberry Pi – cooluk

카카오 음성합성, 음성인식 카카오 음성 API https://speech-api.kakao.com/ 개발자 가이드 … Text-to-Speech(TTS): 텍스트를 음성으로 변환.

+ 여기에 표시

Source: cooluks.tistory.com

Date Published: 1/19/2021

View: 6769

miumida/kakao_tts: Kakao TTS for Home Assistant #HA – GitHub

카카오 음성합성 API를 이용한 TTS for Home Assistant 입니다. 사용을 위해서는 kakao developers에서 api key를 발급받아야 합니다.

+ 여기에 더 보기

Source: github.com

Date Published: 4/11/2021

View: 1761

주제와 관련된 이미지 카카오 tts

주제와 관련된 더 많은 사진을 참조하십시오 파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI 음석인식(STT). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI  음석인식(STT)
파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI 음석인식(STT)

주제에 대한 기사 평가 카카오 tts

  • Author: 생각하는 코딩
  • Views: 조회수 3,697회
  • Likes: 좋아요 40개
  • Date Published: 2020. 5. 28.
  • Video Url link: https://www.youtube.com/watch?v=8l_y-PJmxK8

Speech API

음성 합성 Text-to-Speech system

텍스트를 음성으로 변환하는 기술입니다.

음성 안내, 책 읽기 서비스 등 다양한 분야에서 활용할 수 있습니다.

국내 최초 딥러닝 기반의 음성, Deep Voice

머신 러닝을 통한 지속적인 성능 향상으로, 더 자연스럽고 다양한 음성을 제공합니다.

SSML 지원

SSML 태그로 발음, 속도, 볼륨, 목소리 등을 조절하여 원하는 음성을 맞춤 설정할 수 있습니다. ( SSML 가이드 )

고품질의 새로운 TTS 서비스를 경험해 보세요. TEXT SSML 글자수(공백포함) : 55자 / 총 200자 유형

Plain Voice Deep Voice

목소리

Spring Ryan Naomi Summer Roman

▶ 음성듣기

[python] 카카오 음성API TTS (feat. Postman)

반응형

카카오 TTS는 7월 1일부로 서비스 종료하였습니다.

카카오 i Cloud에서 서비스 계획인것 같은데 그떄 업데이트 하도록 하겠습니다 ~

api key가 남아있는 분들은 아직 실행되는거같아서 글은 남겨둡니다.

TTS란 Text To Speech로 카카오에서 텍스트를 음성으로 변환해주는 기술을 제공한다.

카카오 TTS를 사용하려면 API KEY를 받아와야하는데

API KEY가 없다면 아래의 STT 게시글로 이동하여 상단의 API KEY 받아오기를 먼저 수행해야한다.

2021.07.05 – [프로그래밍] – [python] 카카오 음성API STT (feat. postman)

참고로 2번 STT는 Speak to Text로 TTS와 반대기능이다. TTS와는 별개이다.

TTS (Text to Speak) 실행

— Request

— Sample

샘플에서 request 부분을 보면 데이터(-d) 부분이 xml, html 구조처럼 로 감싸져 있다.

카카오 SSML이라고 하는데 아래 링크에 들어가 가이드를 확인하자.

https://developers.kakao.com/assets/guide/kakao_ssml_guide.pdf

반응형

–Postman

-host

-header

-body

-결과

결과물은 위 사진과 같이 음성파일로 날라온다.

다음은 파이썬코드이다.

import os, requests, json, wave url = “https://kakaoi-newtone-openapi.kakao.com/v1/synthesize” key = ‘[REST API KEY]’ headers = { “Content-Type”: “application/xml”, “Authorization”: “KakaoAK ” + key, } data = “하이” res = requests.post(url, headers=headers, data=data) f= open(‘temp.wav’, ‘wb’) f.write(res.content) f.close()

만약 한글부분에서 “latin1 ~~ utf-8” 에러가 뜬다면 한글부분을

“하이”.encode(‘utf-8’).decode(‘latin1’)

변환하여 사용해본다.

반응형

카카오 TTS API 사용하기(Javascript)

간단한 미니 프로젝트를 하면서 텍스트를 음성으로 출력하는 작업이 필요했는데 여러 TTS API 중 카카오의 API가 가장 자연스럽다고 판단하여 카카오 API를 사용하기로 결정했다. TTS API를 사용하여 오디오 파일을 받을 때 처음 겪어봐서 난감했던 상황을 해결하는 과정을 기록해보려고 한다.

API 사용하기

우선 미니 프로젝트에서 API 사용 목적은 출력하고싶은 텍스트를 xml로 감싸서 API를 사용하여 xml 데이터를 보낸 후 오디오 파일을 받으면 그 파일을 재생시키는 것이 목적이었다.

Kakao Developers

import axios from ‘axios’ ; window . addEventListener ( ‘DOMContentLoaded’ , async ( ) => { const xmlData = ‘테스트해보기.‘ ; try { const { data } = await axios . post ( ‘https://kakaoi-newtone-openapi.kakao.com/v1/synthesize’ , xmlData , { headers : { ‘Content-Type’ : ‘application/xml’ , Authorization : ` KakaoAK ${ API_KEY } ` , } , } ) ; console . log ( data ) ; } catch ( e ) { console . error ( e . message ) ; } } ) ;

위의 문서에 나와있는대로 요청을 보내보았다.

받은 data를 콘솔로 확인해보니 난해한 문자들이 있어서 당황스러웠다.

그래서 바로 data를 확인하지 않고 받은 응답을 먼저 확인해보았다.

데이터가 깨져있어서 어떻게 진행해야할 지 막막하던 찰나에

headers에 content-type으로 audio/mpeg인 것을 확인한 후 Audio MDN을 찾아 보았다.

Audio and Video Delivery – Developer guides | MDN

let context ; let request ; let source ; try { context = new AudioContext ( ) ; request = new XMLHttpRequest ( ) ; request . open ( “GET” , “http://jplayer.org/audio/mp3/RioMez-01-Sleep_together.mp3” , true ) ; request . responseType = “arraybuffer” ; request . onload = function ( ) { context . decodeAudioData ( request . response , function ( buffer ) { source = context . createBufferSource ( ) ; source . buffer = buffer ; source . connect ( context . destination ) ; source . start ( 0 ) ; } ) ; } ; request . send ( ) ; } catch ( e ) { alert ( ‘web audio api not supported’ ) ; }

위의 코드는 Audio MDN에 있는 코드로 요청을 보내서 audio 파일을 받고 재생하는 예제이다.

내가 원하던 상황과 비슷하다고 판단했고 여기서 주의 깊게 본 부분은 request.responseType = “arraybuffer” 였다.

그럼 나도 요청에 대한 응답을 arraybuffer로 받으면 되겠다 싶어서 axios npm 문서에서 옵션을 찾아보았다.

axios

역시나 responseType 이 있었고 그중에서 arraybuffer 또한 있었다.

const { data } = await axios . post ( ‘https://kakaoi-newtone-openapi.kakao.com/v1/synthesize’ , xmlData , { headers : { ‘Content-Type’ : ‘application/xml’ , Authorization : ` KakaoAK ${ API_KEY } ` , } , responseType : ‘arraybuffer’ , } ) ;

따라서 다음과 같이 responseType: ‘arraybuffer’ 을 추가하고 다시 data를 확인해보았다.

이상한 문자가 나오던 아까와 다르게 arraybuffer 형태로 나오는 것을 볼 수 있다.

이제 arraybuffer를 얻었으니 마지막으로 재생만 남았다. 재생은 아까 MDN에 있는 코드를 그대로 활용하였다.

const { data } = await axios . post ( ‘https://kakaoi-newtone-openapi.kakao.com/v1/synthesize’ , xmlData , { headers : { ‘Content-Type’ : ‘application/xml’ , Authorization : ` KakaoAK ${ API_KEY } ` , } , responseType : ‘arraybuffer’ , } ) ; const context = new AudioContext ( ) ; context . decodeAudioData ( data , buffer => { const source = context . createBufferSource ( ) ; source . buffer = buffer ; source . connect ( context . destination ) ; source . start ( 0 ) ; } ) ;

드디어 성공적으로 목소리가 출력되었다

최종 코드

import axios from ‘axios’ ; window . addEventListener ( ‘DOMContentLoaded’ , async ( ) => { const xmlData = ‘테스트해보기.‘ ; try { const { data } = await axios . post ( ‘https://kakaoi-newtone-openapi.kakao.com/v1/synthesize’ , xmlData , { headers : { ‘Content-Type’ : ‘application/xml’ , Authorization : ` KakaoAK ${ API_KEY } ` , } , responseType : ‘arraybuffer’ , } ) ; const context = new AudioContext ( ) ; context . decodeAudioData ( data , buffer => { const source = context . createBufferSource ( ) ; source . buffer = buffer ; source . connect ( context . destination ) ; source . start ( 0 ) ; } ) ; } catch ( e ) { console . error ( e . message ) ; } } ) ;

마무리

이번 경험을 통해서 음성 파일을 받았을 때 어떻게 다룰지 알게 됐고, 추가로 arraybuffer나 blob, stream 라는 존재들을 이번에 알게 됐는데, 이것들이 어떤 개념인지 공부할 계획이다.

[오픈소스 리뷰기] TTS(Text-to-Speech) 음성합성기술 API 이용하기

오픈소스 리뷰 : 슬기로운 오픈소스 사용법 리뷰해드립니다!

#13 TTS(Text-to-Speech) 음성합성기술 API 이용하기

안녕하세요. 디노랩스입니다!

오늘 리뷰해드릴 오픈소스는 바로 TTS라는 기술을 이용해볼건데요.

TTS는 Text to Speech의 약자로 한국어로 ‘음성합성’이라고 하는데요, 말소리의 음파를 기계가 자동으로 만들어 내는 기술입니다.

간단히 말하면 모델로 선정된 한 사람의 말소리를 녹음하여 일정한 음성 단위로 분할한 다음, 부호를 붙여 합성기에 입력하였다가 지시에 따라 필요한 음성 단위만을 다시 합쳐 말소리를 인위로 만들어내는 기술이죠!

우리 주변에서도 쉽게 볼 수 있는 음성합성기술! API 함께 사용해 볼까요?ㅎㅎ

01_Google gTTS

가장 먼저 gTTS 모듈을 통해 구글 TTS 기능을 사용할 수 있는 방법을 알아보겠습니다.

gTTS (Google Text-to-Speech)는 Google 번역 텍스트 음성 변환 API와 상호 작용하는 Python 라이브러리 및 CLI 도구로 설치 후 누구나 손쉽게 사용할 수 있습니다.

https://gtts.readthedocs.io/en/latest/index.html

# gTTS 모듈을 설치합니다. !pip install gTTS

# gTTS와 notebook 환경에서 audio 파일을 재생하기 위한 모듈을 불러옵니다. from gtts import gTTS from IPython.display import Audio from IPython.display import display

이제 원하는 텍스트를 입력한 뒤 TTS를 통해 오디오파일을 저장해보겠습니다.

text = “안녕하세요. 구글 TTS API 테스트 중입니다. 파이썬을 활용하면 무엇이든 해낼 수 있어요.” tts = gTTS(text, lang=”ko”) tts.save(“hi.mp3”)

# 현재 작업중인 디렉토리에 저장된 hi.mp3 파일을 재생해보겠습니다. wn = Audio(‘hi.mp3’, autoplay=True) display(wn)

gTTS 는 아래와 같은 다양한 언어들을 지원합니다.

from gtts import lang lang.tts_langs()

또 gTTS 는 영어, 프랑스어, 중국어, 스페인어, 포르투갈어의 경우 지역별로 다른 억양을 적용할 수 있습니다.

참고 : https://gtts.readthedocs.io/en/latest/module.html#localized-accents

wn = Audio(‘hello.mp3’, autoplay=True) display(wn)

# 먼저 영어 억양의 default인 미국 억양을 적용해보겠습니다. text = ‘Good afternoon. You can do anything with python’ tts = gTTS(text, lang=’en’) tts.save(‘hello.mp3’)

wn = Audio(‘hello.mp3’, autoplay=True) display(wn)

# 이번에는 tld 파라미터를 다르게 적용하여 영국 억양을 적용해보겠습니다. text = ‘Good afternoon. You can do anything with python’ tts = gTTS(text, lang=’en’, tld=’co.uk’) tts.save(‘hello.mp3’)

wn = Audio(‘hello.mp3’, autoplay=True) display(wn)

02_Kakao

다음으로는 카카오에서 개발한 음성합성 API 활용법을 알아보겠습니다.

아래 링크에서 시작하기 버튼을 클릭, 애플리케이션 추가하기 버튼을 클릭하여 앱 이름, 사업자명을 입력하여 생성을 완료합니다.

https://developers.kakao.com/product/voice

앱 생성을 완료하면 앱 설정에서 생성된 REST API 키값을 확인할 수 있습니다.

다음으로는 카카오 음성 API를 활용하기 위해 왼쪽 메뉴 버튼 중 ‘음성’을 클릭하여, 아래와 같이 음성 API를 활성화해야 합니다.

on 버튼을 클릭 후 사용목적을 입력하여 활성화를 완료해주세요.

이제 직접 코드를 작성하여 카카오 TTS api 를 활용해보겠습니다.

import os, requests, json, wave url = “https://kakaoi-newtone-openapi.kakao.com/v1/synthesize” key = ‘발급받은 키를 입력해주세요.’ headers = { “Content-Type”: “application/xml”, “Authorization”: “KakaoAK ” + key, }

카카오 api에서는 기본적으로 모든 음성은 태그로 감싸야 합니다.

아래와 같이 음성으로 변환하고자 하는 텍스트를 입력합니다.

# 텍스트를 입력합니다. text = “안녕하세요. 제 이름은 카카오 음성합성 API 입니다. 만나서 반가워요. ㅋㅋㅋ” # 입력한 텍스트를 변환하여 api를 호출합니다. data = f”{text}“.encode(‘utf-8’).decode(‘latin1’) res = requests.post(url, headers=headers, data=data) # 호출하여 불러온 결과값을 저장합니다. with open(‘hello_kakao.wav’, ‘wb’) as f: f.write(res.content)

wn = Audio(‘hello_kakao.wav’, autoplay=True) display(wn)

이번에는 카카오 TTS api에서 제공하는 다양한 옵션들을 몇가지 알아보도록 하겠습니다.

참고 : https://developers.kakao.com/assets/guide/kakao_ssml_guide.pdf

태그를 활용하면 다른 목소리를 적용할 수 있습니다.

WOMAN_READ_CALM : 여성 차분한 낭독체 (default)

MAN_READ_CALM : 남성 차분한 낭독체

WOMAN_DIALOG_BRIGHT : 여성 밝은 대화체

MAN_DIALOG_BRIGHT : 남성 밝은 대화체

data = ”’ 지금은 여성 차분한 낭독체입니다. 지금은 남성 차분한 낭독체입니다. 안녕하세요. 여성 밝은 대화체예요. 안녕하세요. 남성 밝은 대화체예요. ”’.encode(‘utf-8’).decode(‘latin1’) res = requests.post(url, headers=headers, data=data) with open(‘voice.wav’, ‘wb’) as f: f.write(res.content)

wn = Audio(‘voice.wav’, autoplay=True) display(wn)

prosody 태그를 활용하면 음성의 속도와 볼륨을 변경할 수 있습니다.

rate slow : 0.9 medium : 1.0 (default) fast : 1.1

volume soft : 0.7 medium : 1.0 (default) loud : 1.4

data = ”’ 안녕하세요. 반가워요. 안녕하세요. 반가워요. ”’.encode(‘utf-8’).decode(‘latin1’) res = requests.post(url, headers=headers, data=data) with open(‘prosody.wav’, ‘wb’) as f: f.write(res.content)

wn = Audio(‘prosody.wav’, autoplay=True) display(wn)

break 태그를 활용하면 의도적으로 문장과 문장 사이에 “쉼”을 줄 수 있습니다.

time : 150(0.15초) ~ 1500(1.5초)까지 지원, default는 150

data = ”’ 첫 번째 문장입니다. 두 번째 문장입니다 옵션을 안준 경우 기본 셋팅 150입니다. 세 번째 문장입니다 네 번째 문장입니다. 앞이랑 똑같죠? 다섯 번째 문장입니다. 길게 쉬죠? ㄹㅁㅌㄷㅊㄹ 여섯 번째 문장입니다. 앞에 문장이 실패해서 쉬지 않습니다. ”’.encode(‘utf-8’).decode(‘latin1’) res = requests.post(url, headers=headers, data=data) with open(‘break.wav’, ‘wb’) as f: f.write(res.content)

wn = Audio(‘break.wav’, autoplay=True) display(wn)

kakao:effect 태그를 활용하면 존대말을 반말로 변경할 수도 있습니다.

tone default : 기본 말투, 변경 없음 friendly : 친구같은 말투

data = ”’ 안녕하세요. 반가워요. 원래는 존댓말인데 반말로 바꿔보겠습니다. 잘 지내요? 여긴 존댓말 구역이에요. 저도 잘 지내요. ”’.encode(‘utf-8’).decode(‘latin1’) res = requests.post(url, headers=headers, data=data) with open(‘friendly.wav’, ‘wb’) as f: f.write(res.content)

wn = Audio(‘friendly.wav’, autoplay=True) display(wn)

여기까지입니다. 잘 따라오셨나요? 🙂

이렇게 오늘 구글과 카카오의 TTS API를 활용하는 법을 알려드렸는데요.

우리 주변에서의 여러 오픈소스들을 이렇게 쉽게, 다양하게 활용할 수 있답니다!

[c#]카카오 TTS(음성합성

반응형

카카오 음성인식, 음성합성이 Beta로 나와 한번 만들어 보았습니다.

네이버Clova 보단 못하지만 Google TTS랑 비교하면 많이 자연스러워 진거 같습니다.

맨 하단에 첨부파일이 있으며 코드중

request.Headers.Add(“Authorization”, “——API키——“);

이 부분만 정상적인 API key를 넣고

string saveFileFullPath = “D:/tts.mp3”;

D드라이브에 tts.mp3 파일로 저장하라는 코드를 원하는 경로로 설정해 주시면 됩니다.

C드라이브쪽은 관리자 권한이 필요할수도 있어서 D로 되어있습니다.

(서비스가 beta라서 언제 고장날지 모른다는점)

아래 링크는 카카오 개발가이드 입니다.

https://developers.kakao.com/docs/restapi/speech

-샘플-

-코드-

코드야뭐 작동만 되면 됬지뭥…

using System ; using System .IO; using System .Net; using System .Text; using System .Windows.Forms; namespace KaKao_TTS { public partial class Form1 : Form { WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); public Form1() { InitializeComponent(); } private void Button1_Click( object sender, EventArgs e) { try { wplayer.close(); string VoiceName = “WOMAN_READ_CALM” ; if (radioButton2.Checked) VoiceName = “MAN_READ_CALM” ; else if (radioButton3.Checked) VoiceName = “WOMAN_DIALOG_BRIGHT” ; else if (radioButton4.Checked) VoiceName = “MAN_DIALOG_BRIGHT” ; string text = richTextBox1.Text; string url = “https://kakaoi-newtone-openapi.kakao.com/v1/synthesize” ; string saveFileFullPath = “D:/tts.mp3” ; HttpWebRequest request = ( HttpWebRequest ) WebRequest .Create(url); request.Method = “POST” ; request.ContentType = “application/xml” ; request.Headers.Add( “Authorization” , “——API키——” ); byte [] byteDataParams = Encoding .UTF8.GetBytes( “” + text + “” ); request.ContentLength = byteDataParams.Length; Stream st = request.GetRequestStream(); st. Write (byteDataParams, 0 , byteDataParams.Length); st.Close(); HttpWebResponse response = ( HttpWebResponse )request.GetResponse(); string status = response.StatusCode.ToString(); Console . WriteLine ( “Status :” + status); File .Delete(saveFileFullPath); using (Stream output = File .OpenWrite(saveFileFullPath)) using (Stream input = response.GetResponseStream()) { input.CopyTo(output); } wplayer.URL = saveFileFullPath; richTextBox1.Text = “” ; } catch ( Exception ex) { Console . WriteLine (ex); } } private void ENTER( object sender, KeyEventArgs e) { if (e.KeyCode = = Keys.Enter) { Button1_Click(sender, e); } } } } Colored by Color Scripter cs

-프로젝트 첨부-

KaKao TTS.zip

반응형

유니티에서 Kakao TTS 사용하기

유니티에서 TTS를 사용할 일이 생겨서 TTS를 제공해주는 서비스를 찾던 중

무료이며 REST API를 제공해주는 Kakao TTS 서비스를 찾게 되었다.

그리고 특별히 REST API를 제공하는 TTS서비스를 찾은 이유는 음성 데이터를 획득하기 위해 별도의 SDK에 종속되기 싫었기 때문이다.

우선 TTS를 사용하기위해 개발자 등록 후 어플리케이션을 추가한다.

https://developers.kakao.com/

그리고 어플리케이션의 설정에 들어가보면 제품설정에서 음성탭을 발견할 수 있는데 이를 활성화 해주면 준비 완료다.

그리고 다음과 같이 TTS요청에 대해 데이터 구조를 작성하였다.

using System; using UnityEngine; [Serializable] public struct TTSDescData { public KakaoTTSVoiceType VoiceType; // Too hard type… [TextArea(3, 15)] public string Text; // TTS 서비스를 받을 문장 } [Serializable] public struct TTSRequestResult { public AudioClip TTSAudioClip; public float Progress; // -1 이면 오류로 인한 실패를 나타냄 public string Log; }

TTS요청의 경우 Kakao음성 문서를 보면 요청시 결과로 Body에 mp3파일이 포함되어 있다고 한다.

https://developers.kakao.com/docs/latest/ko/voice/rest-api#text-to-speech

https://developers.kakao.com/assets/guide/kakao_ssml_guide.pdf

따라서 유니티에서 제공하는 UnityWebRequest + DownloadHandlerAudioClip을 통해 오디오클립을 쉽게 획득할 수 있다.

using System.Text; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; // 카카오 서비스에서 제공하는 음성타입 public enum KakaoTTSVoiceType { WOMAN_READ_CALM, MAN_READ_CALM, WOMAN_DIALOG_BRIGHT, MAN_DIALOG_BRIGHT } public class RequestKakaoTTS : MonoBehaviour { // REST API private const string _requsetUrl = “https://kakaoi-newtone-openapi.kakao.com/v1/synthesize”; private static UTF8Encoding _utf8Encoder = new UTF8Encoding(); // App key [SerializeField] private string _restKey = “”; // TTS요청 과정에 대한 이벤트 정의 public event UnityAction OnDownloaded; public event UnityAction OnProgress; // 이 메소드를 통해 TTS요청 // 단 데이터 획득을 위해서는 반드시 OnDownloaded 이벤트를 구독한 상태여야 한다. public void GetTTSAudioClip(IEnumerator enumerator) { // 입력으로 들어온 데이터를 REST API가 요구하는 body 데이터 형식으로 변환 var bodyDatas = GetRawBodyData(enumerator); if(bodyDatas == null || bodyDatas.Length == 0) { Debug.LogWarning(“KakaoTTS bodyDatas is 0”); return; } StartCoroutine(DownloadAudioClip(bodyDatas)); } private static byte[] GetRawBodyData(IEnumerator enumerator) { StringBuilder builder = new StringBuilder(); builder.Append(““); while(enumerator.MoveNext()) { builder.AppendFormat(“{1}“, enumerator.Current.VoiceType, enumerator.Current.Text); } builder.Append(““); return _utf8Encoder.GetBytes(builder.ToString()); } private IEnumerator DownloadAudioClip(byte[] bodyDatas) { using (UnityWebRequest postReq = UnityWebRequestMultimedia.GetAudioClip(_requsetUrl, AudioType.MPEG)) { // HTTP header 작성 및 body data 삽입 postReq.method = “POST”; postReq.SetRequestHeader(“Content-Type”, “application/xml”); postReq.SetRequestHeader(“Authorization”, $”KakaoAK {_restKey}”); postReq.uploadHandler = new UploadHandlerRaw(bodyDatas); yield return postReq.SendWebRequest(); var res = new TTSRequestResult(); // Failed… if (postReq.result == UnityWebRequest.Result.ConnectionError) { res.TTSAudioClip = null; res.Progress = -1.0f; res.Log = postReq.error; OnDownloaded.Invoke(res); yield break; } // Progress res.Log = “Download progress”; while(!postReq.isDone) { res.Progress = postReq.downloadProgress; OnProgress.Invoke(res); } // Downloaded res.TTSAudioClip = DownloadHandlerAudioClip.GetContent(postReq); res.Progress = 1.0f; res.Log = “Downloaded”; OnDownloaded.Invoke(res); } } }

한가지 아쉬운 점은 다운로드 과정을 코루틴으로 작성했다는 것이다. 차라리 별도의 스레드에서 동작하는 async 비동기로 작성했다면 더 좋았을 것 같다.

Raspberry Pi – 카카오 음성합성, 음성인식

카카오 음성합성, 음성인식

카카오 음성 API

음성 인식(뉴톤) Speech-to-Text(STT): 음성을 텍스트로 변환

음성 합성(뉴톤톡) Text-to-Speech(TTS): 텍스트를 음성으로 변환

무료 가격 정책 음성 인식 5,400초(90분) 음성 합성 20,000자

카카오 개발자 등록

애플리케이션 추가

내 애플리케이션 > 애플리케이션 추가하기

REST API 키 얻기

음성 API 활성화

음성 합성

음성 합성 요청 xml

루트 음성 합성할 텍스트 지정 name 속성: 보이스 선택(성별, 음색) MAN_READ_CALM WOMAN_READ_CALM MAN_DIALOG_BRIGHT WOMAN_DIALOG_BRIGHT 텍스트는 반드시 UTF-8 인코딩이어야 함

예제

지금은 여성 차분한 낭독체입니다. 지금은 남성 차분한 낭독체입니다. 안녕하세요. 여성 밝은 대화체예요. 안녕하세요. 남성 밝은 대화체예요.

새 디렉토리 > 가상환경 설정 > 활성화 > pip install requests

kakao_synthesize.py

> pip install pydub > conda install -c anaconda pyaudio https://www.gyan.dev/ffmpeg/builds/ > release full 다운로드 환경변수 경로 설정

import requests import io from pydub import AudioSegment from pydub.playback import play URL = “https://kakaoi-newtone-openapi.kakao.com/v1/synthesize” HEADERS = { “Content-Type” : “application/xml”, “Authorization” : “KakaoAK 2d7bbeaca71e61a89bef469ece9f01bd” } DATA = “”” 그는 그렇게 말했습니다. 잘 지냈어? 나도 잘 지냈어. 금요일이 좋아요. “”” res = requests.post(URL, headers = HEADERS, data = DATA.encode(‘utf-8’)) # 음성 합성 결과를 파일로 저장하기 with open(“result.mp3”, “wb”) as f: f.write(res.content) # 바로 재생하기 # https://ffmpeg.zeranoe.com/builds/ # 환경 변수에 경로 지정 sound = io.BytesIO(res.content) song = AudioSegment.from_mp3(sound) # 파일에서 재생하기 # song = AudioSegment.from_mp3(“./result.mp3”) play(song)

result.mp3 파일 생성, 재생

음성 인식

음성 인식 오디오 포맷

Mono Channel

16000 Hz

16bit depth

RAW PCM 포맷

음성 인식 샘플 데이터 다운로드 https://developers.kakao.com/docs/latest/ko/voice/rest-api

kakao_dictation.py

import requests import json kakao_speech_url = “https://kakaoi-newtone-openapi.kakao.com/v1/recognize” rest_api_key = ‘2d7bbeaca71e61a89bef469ece9f01bd’ headers = { “Content-Type”: “application/octet-stream”, “X-DSS-Service”: “DICTATION”, “Authorization”: “KakaoAK ” + rest_api_key, } with open(‘heykakao.wav’, ‘rb’) as fp: audio = fp.read() res = requests.post(kakao_speech_url, headers=headers, data=audio) print(res.text)

——newtone7tIbXkDoBbheagfG

Content-Type: application/json; charset=UTF-8

{“type”:”beginPointDetection”,”value”:”BPD”}

——newtone7tIbXkDoBbheagfG

Content-Type: application/json; charset=UTF-8

{“type”:”partialResult”,”value”:”he”}

——newtone7tIbXkDoBbheagfG

Content-Type: application/json; charset=UTF-8

{“type”:”partialResult”,”value”:”헤이”}

——newtone7tIbXkDoBbheagfG

Content-Type: application/json; charset=UTF-8

{“type”:”partialResult”,”value”:”헤이 카카오”}

——newtone7tIbXkDoBbheagfG

Content-Type: application/json; charset=UTF-8

{“type”:”endPointDetection”,”value”:”EPD”}

——newtone7tIbXkDoBbheagfG

Content-Type: application/json; charset=UTF-8

Speech-Length: 2

{“type”:”finalResult”,”value”:”헤이 카카오”,”nBest”:[{“value”:”헤이 카카오”,”score”:98},{“value”:”헤이 카카오야”,”score”:0}]}

——newtone7tIbXkDoBbheagfG–

응답 해석(type)

beginPointDetection 사용자가 말하기 시작하는 것으로 판단되었을 때

partialResult 사용자가 말을 끝내기 전에 음성의 중간 인식 결과가 나왔을 때 value에 중간 결과가 담김. 여러 번 발생할 수 있음

endPointDetection 사용자가 말하는 것을 끝마친 것으로 판단되었을 때

finalResult 사용자가 말한 음성의 최종 인식 결과가 나왔을 때 value에 최종 인식 결과가 담김

errorCalled 음성 인식이 실패 했을 때 value에 에러 메시지가 담김

finalResult 를 추출하는 방법

result_json_string = res.text[ res.text.index(‘{“type”:”finalResult”‘):res.text.rindex(‘}’)+1 ] result = json.loads(result_json_string) print(result) print(result[‘value’])

{‘type’: ‘finalResult’, ‘value’: ‘헤이 카카오’, ‘nBest’: [{‘value’: ‘헤이 카카오’, ‘score’: 98}, {‘value’: ‘헤이 카카오야’, ‘score’: 0}]}

헤이 카카오

슬라이싱

dictation 함수화

import requests import json kakao_speech_url = “https://kakaoi-newtone-openapi.kakao.com/v1/recognize” rest_api_key = ‘2d7bbeaca71e61a89bef469ece9f01bd’ headers = { “Content-Type”: “application/octet-stream”, “X-DSS-Service”: “DICTATION”, “Authorization”: “KakaoAK ” + rest_api_key, } def dictation(audio): res = requests.post(kakao_speech_url, headers=headers, data=audio) result_json_string = res.text[ res.text.index(‘{“type”:”finalResult”‘):res.text.rindex(‘}’) + 1 ] result = json.loads(result_json_string) return result[‘value’] if __name__ == “__main__”: with open(‘heykakao.wav’, ‘rb’) as fp: audio = fp.read() result = dictation(audio) print(result)

miumida/kakao_tts: Kakao TTS for Home Assistant #HA

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

키워드에 대한 정보 카카오 tts

다음은 Bing에서 카카오 tts 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI 음석인식(STT)

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

파이썬으로 #인공지능 #비서 #만들기_2) #KAKAO #OpenAPI # #음석인식(STT)


YouTube에서 카카오 tts 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 파이썬으로 인공지능 비서 만들기_2) KAKAO OpenAPI 음석인식(STT) | 카카오 tts, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment