[IBM] 왓슨 api 호출하기 (포스트맨 사용)

2020. 7. 16. 16:52프로젝트/클라우드

안녕하세요, 이번 글에선 왓슨 API 호출하는 법을 정리해보려고 합니다. API 호출하는 방법은 여러개가 있겠지만, 포스트맨을 사용해서 호출하는 법을 설명해보려고 합니다. IBM에선 CURL 방식을 예제로 들어줬는데 개인적으로 포스트맨을 사용하는게 더 편해서 글을 작성해봅니다. ( 다른 방법을 사용하시는 분들의 공유는 언제나 환영이에요! )

 


왓슨 api post man으로 호출하기

(Language Translator, Speech to Text)

 


 

번역을 위한 API들을 사용해볼건데요, 음성 파일을 텍스트로 변환해주는 API와 번역 API를 사용해볼겁니다. 사용툴은 포스트맨을 사용할거예요. 포스트맨이 없다면 다운받아주세요! 

 

일단 왓슨 API를 사용할 수 있게 세팅을 해야 합니다. 사이트 ( https://cloud.ibm.com/developer/watson/services )에서 아래 두 항목을 클릭해 사용할 수 있게 추가 해주세요! ( 하나만 추가하셔도 좋습니다. 필요하신 만큼! ) 대시보드에서 좌측 메뉴들 중 왓슨 > 모든 왓슨 서비스 찾아보기로 들어가셔도 좋아요.

 

음성파일 > 텍스트
번역

 

이 두개의 서비스를 추가했다면 리소스 목록에서 서비스 목록에 잘 들어가있는지 확인합니다. 잘 들어가 있다면, 번역 기능부터 해보겠습니다. Speech to text를 보고 싶으신 분들은 밑으로 좀만 더 내려주세요!

 


Language Translator API

Language Translator을 들어가면 

API를 사용할 수 있는 정보들이 있습니다. 이 두개 항목을 잘 복사해놔주세요. 그럼 이제 postman을 실행시킵니다.

 

제일 먼저 URL을 입력해둘 겁니다. 위 항목에 아까 복사해둔 항목들 중 URL을 입력해둡니다. 입력했다면 다시 IBM 서비스 페이지로 돌아가 시작하기 항목으로 갑니다. 텍스트 번역 항목의 예제를 봅니다.

 

curl -X POST 
-u "apikey:{apikey}" 
--header "Content-Type: application/json" 
--data "{\"text\": [\"Hello, world! \", \"How are you?\"], \"model_id\":\"en-es\"}" 
"{url}/v3/translate?version=2018-05-01"

 

예제는 curl 명령어로 작성되어 있습니다. 저는 이걸 포스트맨에서 요청을 날려볼건데요. 그러기 위해선 위 옵션을 분석해야 합니다. 일단 -X 는 HTTP 메소드를 설정하는 겁니다. -X POST니 post명령으로 요청한다는 뜻입니다.

 

 그 다음인 -u에서 조금 헤맸었는데요, -u / --user 명령으로 저희가 지금 요청하고자 하는 api에서 인증이 필요해서 들어간 옵션입니다. 데이터을 요구할때 authorization 헤더 옵션 뒤에 필요 값들을 넣어주면 됩니다. 예제에 적힌 형태와 같은 것은 id:password 형태로 basic auth로 명령을 보내주면 됩니다. 

 

 

 다음은 헤더부분을 설정하면 됩니다. 지금 데이터 옵션 뒤에 값의 형태를 보시면 json 형태로 되어있습니다. curl에서의 명령도 application/json이네요. Header 옵션에 Content-type 을 application/json 로 추가해주세요.

 

 

 

이제 본격적으로 데이터를 넣어줍니다. Body에 data 앞부분에 있는 것들을 json 형태에 맞게 넣어줍니다. 다만 예제와는 다르게 영어를 한국어로 바꿔보도록 하겠습니다. ( ko가 한국어로 번역하겠다는 뜻입니다. en-ko => 영어를 한국어로 ) 

마지막으로, "{url}/v3/translate?version=2018-05-01" 항목은 제공된 url뒤에 붙일 데이터입니다. 처음에 입력한 url에 /v3부터 붙여넣어주세요. 그리고 이제 SEND를 해주면,

 

이렇게 잘 번역 된답니다! 

 


Speech to Text API

 

 

이제 음성파일을 텍스트로 바꾸는 예제를 봅시다. 서비스 목록에서 Speech to Text에 들어와 아까와 같이 apikey와 url을 복사해둡니다. 다 복사했다면, 시작하기로 이동합니다. 첫번째 예제를 확인해봐요.

 

curl -X POST 
-u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @{path_to_file}audio-file.flac \
"{url}/v1/recognize"

 

첫줄까지는 번역예제와 동일합니다. authorization 헤더까진 동일하게 넣어주세요. 헤더엔 audio/파일타입명을 넣어주세요. 저는 mp3 파일을 사용해서 audio/mp3 로 기입했습니다.

 

 

 

이제 body에 파일을 넣어주도록 합니다. Key input의 오른쪽으로 마우스를 가져다두면 file을 택할 수 있는 select box가 등장합니다. file을 택해서 value에 오디오 파일을 넣어주세요.

 

 

그럼 이제 Send를 해보면 오디오 파일이 text로 나타납니다. 오디오 파일 이 5분이면 대략 6분까지도 걸렸습니다. 유의해주세요! 만약 send가 정상적으로 이뤄지지 않는다면 헤더에서 hidden 처리된 항목 중 Content-type이 또 없는지 확인해주세요. (그밖의 오류는 댓글로!)

 

위 결과로 나온 구문을 번역 api로 한번 더 돌렸을 때, 제대로된 번역이 잘 안되더라고요. 이대로 사용하는건 무리가 있을 것 같습니다. 예제에 옵션을 사용하여 오디오 변환 방법도 실행해봤는데 정확도가 상승한 것 같지는 않았는데, 더 고민해봐야 하는 부분 같습니다.

 

 

 

혹시 틀린 정보가 있다면 피드백은 언제나 환영입니다.