VoiceText Web APIでのGolang利用事例のご紹介

B9dd885e3ef94ac5e0bcfdf4800ba703?s=47 tmaeda
January 21, 2015

VoiceText Web APIでのGolang利用事例のご紹介

Golang meetup in Sapporo 2015/01/21 #sapgolang

B9dd885e3ef94ac5e0bcfdf4800ba703?s=128

tmaeda

January 21, 2015
Tweet

Transcript

  1. 7PJDF5FYU8FC"1* Ͱͷ(PMBOHར༻ࣄྫ ͷ͝঺հ !UNBFEB͑ʹ͠ςοΫ (PMBOHNFFUVQJO4BQQPSP

  2. !UNBFEB w ג ͑ʹ͠ςοΫͰΤϯδχΞΛ͍ͯ͠·͢ɻ w3VCZͷ࢓ࣄ͕ଟ͍Ͱ͢ɻ w࠷ۙ͸5ZQF4DSJQUͱ͔3FBDUͱ͔ JQZUIPO QBOEBTͱ͔ʹڵຯ͕͋Γ·͢ɻ wԑ͋ͬͯɺ͜͜೥͙Β͍গ͚ͩ͠(P࢖͍ͬͯ ·͢ɻ

  3. ຊ೔ͷ͓࿩ w7PJDF5FYU8FC"1*ͷ͝঺հ w(PΛ࢖ͬͯΈͯͷײ૝

  4. 7PJDF5FYU8FC"1* w)0:"αʔϏεגࣜձ༷͕ࣾӡӦ͍ͯ͠Δߴ඼ ࣭Ի੠߹੒αʔϏεͰ͢ɻ w8FC"1*ͷΠϯλʔϑΣʔε෦෼͸ฐࣾͰ։ൃ ͷ͓ख఻͍Λͤͯ͞௖͖·ͨ͠ɻ

  5. 7PJDF5FYU8FC"1* curl "https://api.voicetext.jp/v1/tts" \ -o "test.wav" \ -u "YOUR_API_KEY:" \

    -d "text=͓͸Α͏͍͟͝·͢" \ -d “speaker=hikari" \ -d “emotion=happiness” \ -d “emotion_level=2”
  6. 7PJDF5FYU8FC"1*ͷߏ੒ Portal(Rails) Wrapper (Go)! ར༻ऀ VoiceText Engine Ի੠߹੒αʔόʔ Heroku Postgre!

    SQL ɾϩά ɾϢʔβʔ ೝূɺϩάॻࠐ Ϣʔβʔ! ొ࿥ Ϣʔβʔొ࿥ LoadBalancer APIར༻
  7. গ͠ͷؒɺσϞ΋͔ͶͯɺVoiceText Ͱ࿩͠·͢ɻ showͰ͢ɻςϨϏ౦ژܥྻʮϞϠ ϞϠ͞·͊ʙͣ2ʯͱ͍͏൪૊ͷφ ϨʔγϣϯΛ୲౰͍ͯ͠·͢ɻ

  8. ͳͥ(Pʁ w଎౓ͱฒྻੑ w$ͷϥΠϒϥϦͱͷ਌࿨ੑ w։ൃޮ཰ hikariͰ͢ɻ

  9. ͳͥ(Pʁ w଎౓ͱฒྻੑ w$ͷϥΠϒϥϦͱͷ਌࿨ੑ w։ൃޮ཰ takeruͰ͢ɻ

  10. ͳͥ(Pʁ w଎౓ͱฒྻੑ w$ͷϥΠϒϥϦͱͷ਌࿨ੑ w։ൃޮ཰ harukaͰ͢ɻ

  11. ͳͥ(Pʁ w଎౓ͱฒྻੑ w$ͷϥΠϒϥϦͱͷ਌࿨ੑ w։ൃޮ཰ bearͰ͢ɻ

  12. σϞ͓͠·͍ santaͰ͢ɻ

  13. ྑ͔ͬͨͱ͜Ζ GoΛ࢖ͬͯΈͯ

  14. ࣮ߦ଎౓ w$΄Ͳ͸ϝϞϦ؅ཧ΍ϙΠϯλͷ؅ཧʹؾΛ࢖Θ ͳͯ͘ࡁΉ͕ɺ$ͱಉఔ౓ͷ଎౓͕ͰΔɻ wHPSPVUJOFͱDIBOOFMΛར༻ͯ͠ɺൺֱత؆୯ʹ ϚϧνίΞΛ׆͔͢ฒྻϓϩάϥϛϯά͕Ͱ͖ Δɻ

  15. $ͱͷ਌࿨ੑ wඞཁ࠷খݶͷखଓ͖ Ͱɺ$Ͱॻ͔Εͨ֎ ෦ϥΠϒϥϦͷؔ਺ Λݺͼग़ͤΔɻ package rand ! /* #include

    <stdlib.h> */ import "C" ! func Random() int { // Cͷੈքͷrandom()ؔ਺Λݺͼग़ͯ͠ // ݁ՌΛgoͷੈքͷintʹม׵ͯ͠ฦ͢ return int(C.random()) } ! func Seed(i int) { // goͷੈքͷintܕͷiΛCͷੈքͷuintʹม׵ͯ͠ɺ // Cͷੈքͷsrandomؔ਺ʹҾ਺ͱͯ͠౉͢ C.srandom(C.uint(i)) }
  16. ੩తνΣοΫ wίϯύΠϧ࣌ʹ੩తܕνΣοΫ͕ಇ͘ͷͰɺ ͠ΐʔ΋ͳ͍ϛε͸ίϯύΠϧ࣌ʹ๷͛Δɻ wͦͷଞɺએݴͨ͠ͷʹ࢖ͬͯͳ͍ม਺ͱ͔ɺ࢖ͬ ͯͳ͍ύοέʔδͱ͔΋ࢦఠͯ͘͠Εͯɺ݁ߏ਌ ੾ɻ

  17. ॆ࣮ͷϥΠϒϥϦ wඞཁ࠷௿ݶͷϥΠϒϥϦ͸ඪ४Ͱଗ͍ͬͯΔɻ w਺஋ɺจࣈྻɺਖ਼نදݱɺ഑ྻ΍NBQͳͲͷ ίϯςφɺ࣌ؒɺύʔαʔɺ04ɺωοτϫʔ Ϋɺ҉߸ɺѹॖɺϩάͳͲͳͲɻ wΦʔϓϯιʔεͷϥΠϒϥϦ΋͍Ζ͍Ζ͋Δɻ

  18. γϯϓϧͳݴޠ࢓༷ wΫϥεͳ͍͚ͲɺܕʹϝιουΛੜ΍ͤΔͷͰ ࠔΒͳ͍ɻ wྫ֎ॲཧػೳͳ͍͚Ͳɺෳ਺ฦΓ஋ͰͦΜͳʹ ࠔΒͳ͍ɻ w(FOFSJDTͳ͍͚Ͳɺ഑ྻͱNBQͰ͸ཁૉͷܕΛ ࢦఆͰ͖ΔͷͰɺଟ͘ͷέʔεͰ͸ࠔΒͳ͍ɻ

  19. HPGNU wݴޠඪ४ͷίʔσΟϯάن໿͕͋ͬͯɺHPGNUί ϚϯυΛ࢖͏ͱ੔ܗͰ͖ΔͷͰɺίʔσΟϯά ن໿ʹ·ͭΘΔफڭઓ૪͕ى͖Δස౓͕গͳ͍ɻ

  20. ݴޠ࢓༷͕҆ఆ w݁ߏසൟʹ(PͷόʔδϣϯΞοϓ͕ߦΘΕΔ ͕ɺେ͖͘ڍಈ͕มΘͬͯޓ׵ੑͷ໰୊͕ى͖ Δɺͱ͍͏͜ͱ͕͋·Γͳ͔ͬͨʢগͳ͘ͱ΋ ͜Ε·Ͱ͸ʣɻ

  21. ͪΐͬͱෆຬͳͱ͜Ζ

  22. දݱྗ͕গͳΊ w(FOFSJDTཉ͍͠ w୅਺తσʔλܕͱύλʔϯϚονཉ͍͠

  23. ϥΠϒϥϦͷػೳ΍඼࣭ w௕͍ظؒɺଟ͘ͷਓʹ࢖͍ࠐ·Εͨ؀ڥ +BWBͱ ͔3VCZͱ͔ ͱൺֱ͢ΔͱɺϥΠϒϥϦͷػೳ ΍඼࣭͕·ͩ੒ख़͍ͯ͠ͳ͍ײ͡ɻ wࣗಈςετ؀ڥ wจࣈίʔυม׵ʢ͍ΘΏΔʮ೾μογϡ໰୊ʯ ͱ͔ʣ wGPSL

    FYFDඇޮ཰໰୊
  24. ·ͱΊ

  25. ·ͱΊ wଟগͷෆຬ఺͸͋Δ΋ͷͷɺશମతʹ͸ඇৗʹ όϥϯεͷऔΕͨྑ͍ݴޠɾ؀ڥͰେม࣮༻త ͳͷͰେม͓͢͢ΊͰ͖·͢ɻ w7PJDF5FYU8FC"1*ΛͲ͏ͧ͝᩾ርʹɻ ࢖ͬͯgolang