Cog.io Section02
##Cogio YoutubeScript project Cogio ์ ํ๋ธ ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ YoutubeExtractor dll๊ณผ Azure Cognitive service๋ฅผ ์ด์ฉํ ํ๋ก์ ํธ ์ ๋๋ค.
##YoutubeExtractor
- Overview YoutubeExtractor๋ .NET์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, C#์ผ๋ก ์์ฑ๋์ด ์๊ณ ์ ํ๋ธ์์ ๋น๋์ค๋ฅผ ๋ค์ด๋ก๋ ํ ์ ์๊ณ ์ค๋์ค ํธ๋์ ์ถ์ถํ ์ ์์ต๋๋ค. (ํ์ฌ๋ ํ๋์ ๋น๋์ค์์๋ง ์ค๋์ค ์ถ์ถ์ด ๊ฐ๋ฅํฉ๋๋ค.)
##Azure Cognitive service
Bing speech API๋ ์์ฑ์ ํ ์คํธ๋ก ๋ณํํ๊ณ ๋ค์ ์์ฑ์ผ๋ก ๋ณํํ์ฌ ์๋๋ฅผ ์ดํดํฉ๋๋ค.
-
์์ฑ ์ธ์ ํ์ผ์ ์ค๋์ค๋ ๋ง์ดํฌ ๋๋ ๊ธฐํ ์ค๋์ค ์์ค์ ๋ผ์ด๋ธ ์์ฑ์ ํฌํจํ ์์ฑ ์ค๋์ค๋ฅผ ์ค์๊ฐ์ผ๋ก ํ ์คํธ๋ก ๋ณํํฉ๋๋ค. ๋ํ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ค๋์ค๊ฐ ์๋ฒ๋ก ์ ์ก๋ ๋ ๋ถ๋ถ ์ธ์ ๊ฒฐ๊ณผ๋ ๋ฐํ๋ฉ๋๋ค.
-
์์ฑ ์๋ ์ธ์ ์์ฑ ์ค๋์ค๋ฅผ ์์ ์ ์ ๋ํ๋ ์๋๋ก ๋ณํํฉ๋๋ค. ์์ฑ ์๋ ์ธ์์ย ์ธ์ด ์ธ์ ์ธํ ๋ฆฌ์ ํธ ์๋น์ค ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ฑ์ ํ ์คํธ๋ก ๋ณํํ ๋ฟ๋ง ์๋๋ผ ๋งํ๋ ์ฌ๋์ ์๋๋ฅผ ์์ฝ๊ฒ ํ์ ํ์ฌ ์ฑ ๋ด์์ โ์๋ ์ค์ โ๊ณผ ๊ฐ์ ์์ ์ ๋ง๋ค ์ ์๋๋ก ํด์ค๋๋ค.
-
ํ ์คํธ ์์ฑ ๋ณํ ํ ์คํธ๋ฅผ ์์ฑ ์ค๋์ค๋ก ๋ณํํฉ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ์์๊ฒ ๋ค์ โ๋งโํด์ผ ํ ๊ฒฝ์ฐ ์ด API๊ฐ ์ฑ์์ ์์ฑ๋ ํ ์คํธ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ฌ์ ๊ฐ๋ฅํ ์ค๋์ค๋ก ๋ณํํฉ๋๋ค.
###Translator speech API
Microsoft Translator Speech API๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐย automatic translation(์๋ ๋ฒ์ญ) ์๋น์ค์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด API๋ฅผ ์ฌ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ ์๋น์ค์ ์ข ๋จ ๊ฐ ์ค์๊ฐ ์์ฑ ๋ฒ์ญ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
-
์์ฉ ํ๋ก๊ทธ๋จ ๋๋ฌ ๋ฒ์ ํ์ฅ ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ๋ฐ ์น ์์ฉ ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋ ์์ฑ ๋ฒ์ญ ์๋น์ค(๊ธฐ๊ณ ๋ฒ์ญ์ด๋ผ๊ณ ๋ ํจ)์ธย Translator Speech API์ ๊ฐ๋ฐฉํ REST ์ธํฐํ์ด์ค๋ฅผ ํตํด 9๊ฐ ์ธ์ด๋ก ๋ฒ์ญ ํ ์ ์์ต๋๋ค.
-
์ค์ ๋ํ ๊ธฐ๋ก ๋ฐ ๋ฒ์ญ ์ค์ ๋ํ์ ๋ฒ์ญ์ ์ต์ ํ๋ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์์ฑ ๋ฒ์ญ์ ์ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
-
์์ฉ ํ๋ก๊ทธ๋จ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ๊ณ ์ ํ ์๋๋ฆฌ์ค์ ๋ฐ๋ผ API์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ๋ ฅ(๋งํ ๋ ๋ถ๋ถ์ ์ธ ๊ธฐ๋ก, ๋ถ๋ถ์ ์ธ ํ ์คํธ ๋ฒ์ญ, ์ต์ข ๊ธฐ๋ก, ์ต์ข ํ ์คํธ ๋ฒ์ญ ๋๋ ์ค๋์ค ํ ์คํธ ์์ฑ ๋ณํ ๋ฒ์ญ)์ ์ด์ฉํ ์ ์์ต๋๋ค.
##Cogio YoutubeScript project Azure Cognitive ๋ถ๋ถ
- Azure Cognitive Speech api๋ฅผ ์ฐ๊ธฐ ์ํด์๋ DataRecognitionClient ์ ๋ณ์๊ฐ ํ์ํฉ๋๋ค. ์์ ํ๋ฉด์์๋ m_dataClient๋ผ๋ ๋ณ์๋ก ์ด๋ฅผ ์ด์ฉํฉ๋๋ค.
- speech api์์ ํ์์ ์์ฑ์ ์ธ์ํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ฉ๋๋ค. ํ์์ ๋ง์ดํฌ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ๋ก ๋ณ ํํ๋ ๊ธฐ์ ๊ณผ ๊ธฐ์กด ์์ฑํ์ผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ๋ก ๋ฐ๊พธ๋ ๊ธฐ์ ์ ๋ค์ ์์ต๋๋ค. YoutubeScript์์๋ ๊ธฐ์กด ์์ฑํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ์ ๋ณด๋ด์ ์ธ์ํ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. SpeechRecognitionMode ์์ longDictation๊ธฐ๋ฅ์ ๊ธด ์์ฑ ํ์ผ์ ์ ์ ๋ก ๋ณด๋ด์ฃผ๋ ๋งค์๋๋ฅผ ๋ด๋นํ๊ณ ์์ต๋๋ค.
- DefaultLocale์ ์ ์ ์๋ฒ๋ก ์์ฑํ์ผ์ ๋ณด๋ผ๋ ์ด๋ค ์ธ์ด๋ก ๋ฐ๊ฟ๊ฒ์ธ์ง ๊ณ ๋ฅด๋ ์ ํ ๋ฐฐ์ด์ ๋๋ค.
- primarykey๋ ์ ์ ์๋ฒ์์ ํ ๋นํ๋ accesstoken์ ๋๋ค.
- translate_SubscriptionKey๋ ์ ์ ์๋ฒ์์ translator api๋ฅผ ์ธ๋ ์ฐ๋ ํ ํฐํค์ ๋๋ค.
###2. ๋๋ฒ์งธ ์ด๊ธฐ ์
ํ
์์ฑ์
-
DataRecognitionClient ์์ ๋ณ์๋ก ๋ฐ์ m_dataClient๋ฅผ ํตํด ์ ์ ์ ์ฐ๊ฒฐํ๋ ค๋ฉด Speech RecognitionServiceFactory.CreateDataClient ๋ฉ์๋๊ฐ ํ์ํฉ๋๋ค. ์ด ๋ฉ์๋๋ 3๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๋๋ฐ ์์ ์ง์ ํ longDictation์ ์ง์ ํ m_recoMode, DefaultLocale์์ ์ง์ ํ ์ธ์ด , primarykey๊ฐ ๋ค์ด๊ฐ๋๋ค.
-
Speech API๋ฅผ ์ด์ฉํ ๋๋ 3๊ฐ์ ํธ๋ค๋ฌ๋ฅผ ๋ง๋ค์ด์ผํฉ๋๋ค. ์ด๋ OnResponseReceived ๊ณผ OnPartialResponseReceived ์ OnConversationErrorํธ๋ค๋ฌ๋ฅผ ๋ค์ ์์ต๋๋ค.
- ์ด ํจ๋ค๋ฌ๋ ์ ์ ์ ํด๋ผ์ด์ธํธ์ฌ์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ฌ๋ฅผ ๋์์ฃผ๋ ์ฐฝ์ ๋๋ค.
- ์ฃผ๋ก ํค๊ฐ ๋ง๋ฃ๋๊ฑฐ๋ request๊ฐ ์๋ชป ๋ ๋ ๋ํ๋ฉ๋๋ค.
###4. PartialResponseReceived ํจ๋ค๋ฌ
- ์ด ํจ๋ค๋ฌ๋ ์ ์ ์ ๋ถ๋ถ ๋ถ๋ถ request์ response๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์๊ธฐ๋ ๊ฐ๋ค์ ์ ์ฅํฉ๋๋ค. ์ค์๊ฐ์ผ๋ก Speech api๊ฐ ๋ถ์ํ๋ ๋๋ก response๊ฐ์ e.PartialResult๋ผ๋ ๋ณ์์ ์ ์ฅํฉ๋๋ค.
###5. OnResponseReceived ํจ๋ค๋ฌ
- ์ด ํจ๋ค๋ฌ์๋ PartialResponseReceived์์ ๋ฐ์ response๊ฐ์ค ๊ฐ์ฅ ์ ํํ ๊ฐ๋ค์ ์ ๋ณํด ์ฌ์ฉ์์๊ฒ responseํ๋ ์ญํ ์ ํฉ๋๋ค.
- response๊ฐ๋ค์ ๋ชจ์์ System.IO.StreamWriter๋ฅผ ํตํด text ํ์ผ๋ก ์ ์ฅํ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
- sendAudio ๋ฉ์๋๋ fileStream์ ํตํด wavํ์ผ์ ์ ์ ์๋ฒ์ ์ ์กํ๋ ์ญํ ์ ํฉ๋๋ค.
- wav ํ์ผ์ธ์ ๋ค๋ฅธ ํ์์ ์ฌ๋ฆฌ๋ ค๋ฉด ๊ทธ์ ๋ง๋ ํ์์ ๋ํ ์ค์ ์ ๊ฐ์ถฐ์ ๋ณด๋ด์ผํฉ๋๋ค. YoutubeScript์์๋ ์ด ๊ณผ์ ์ ์๋ตํ๊ณ wavํ์ผ๋ก ์ฌ๋ฆฌ๋ ์์ ์ ํฉ๋๋ค.
- Youtube์์ ๋์์์ ์ถ์ถํ๊ธฐ ์ํด์ ์ด ํ๋ก๊ทธ๋จ์์ YoutubeExtractor.dll์ ์ด์ฉํฉ๋๋ค. ๋จผ์ ์ถ์ถํ ๋์์์ ์ฃผ์๋ฅผ ๋ฐ๋ ์์ ์ DownloadUrlResolver.GetDownloadUrl์์ ๋ฐ์์ต๋๋ค.
- videoํ์ผ์ ๋ฐ์๋ ๋น๋์ค ํ์์ mp4๋ก ํด์๋๋ 240,360,480p๋ก ํด์๋ ์ ํ์ฐฝ์์ ์ ํํ ์ ์์ต๋๋ค.
- VideoDownloader์์ ์์ ์ค์ ํ ๋น๋์ค ๋ณ์๋ฅผ ํตํด mp4๋ก ๋์์์ ํธ์ถํฉ๋๋ค.
- bing Translator๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ request header์์์ ๋ง์ถฐ์ฃผ์ด์ผ ํฉ๋๋ค.
- ์ ์ ํํ์ด์ง์์ ADMAccessToken์ ์ ๊ณต๋ฐ๊ณ ์ด๋ฅผ headerValue์ "Bearer" ์ admToken.access_token์ผ๋ก ๋ฃ์ด์ผ ํฉ๋๋ค.
###9. Bing Translator TransformTextMethod
- bing translator์์ ๋ฒ์ญ์ ํ๊ธฐ์ํด์ httpWebRequest๋ฅผ ํตํ ์๋ฒํต์ ์ ์ด์ฉํฉ๋๋ค.
- uri ๋ณ์์ ์ ์ฅ๋ text์ ๋ฐ๊พธ๊ณ ์ถ์ ์ธ์ด๋ฅผ ์ค์ ํฉ๋๋ค.
- httpWebRequest header์ ์์ ์ค์ ํ ํ ํฐ์ ์ฝ์ ํ๊ณ ์๋ฒ์ ์์ฒญํฉ๋๋ค.
- ์๋ฒ์์ ๋ฐ์ response ๋ฐ์ดํฐ๋ฅผ ๋๋ณธ_๋ฒ์ญ ํ ์คํธ ํ์ผ์ ์ ์ฅํ๋ฉด ์์ฑ!