Tweet Language

Performs Tone Analysis and translates tone and tweet to a different language and speaks that language

This flow takes translates the tone output into any language and then speaks the tone and the tweet in that language.

How to Build this Flow

Step 1 : Copy the flow from Tweet Tone

Copy the flow from Tweet Tone and paste nodes into this new project

Step 2: Set up Language Translator Service

Insert Language Translator Node from IBM Watson palette and connect to output of Score Tweet Node.

Get Access to Language Translator

  • Log into IBM Cloud and Go to IBM Cloud Catalog

  • Search for Language Translator Service within Catalog

  • Create Lite Service

  • Go to created Service and get service credentials for Langrage Translator

  • Set up node properties with username , password and API key from service credentials

Step 3. Insert Text to Speech service ( created in Tweet Speech) to Language Translator

Insert Text to speech service node and connect with Language Translator Node . Use Service credentials from Tweet Speech project.

Connect change node to change msg.payload to msg.speach

Connect play audio node to change node

Step 4. Deploy

Once this flow is deployed you should be able to hear whether a tweet expresses Joy, Fear , Sadness , Anger or Disgust !

Flow can be imported from :

[
   {
      "id":"f2ce3087.ee968",
      "type":"tab",
      "label":"Tweet Language ",
      "disabled":false,
      "info":""
   },
   {
      "id":"3b13170a.8b5ba8",
      "type":"inject",
      "z":"f2ce3087.ee968",
      "name":"Happy test",
      "topic":"",
      "payload":"{\"text\":\"every one is awesome\"}",
      "payloadType":"json",
      "repeat":"",
      "crontab":"",
      "once":false,
      "onceDelay":"",
      "x":160,
      "y":140,
      "wires":[
         [
            "1ccd705b.07ca2"
         ]
      ]
   },
   {
      "id":"1ccd705b.07ca2",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"",
      "rules":[
         {
            "t":"set",
            "p":"tweet",
            "pt":"msg",
            "to":"payload",
            "tot":"msg"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":380,
      "y":180,
      "wires":[
         [
            "19037133.924c87"
         ]
      ]
   },
   {
      "id":"62a9afb1.aa101",
      "type":"inject",
      "z":"f2ce3087.ee968",
      "name":"Sadness test",
      "topic":"",
      "payload":"{\"text\":\"This is miserable and sad\"}",
      "payloadType":"json",
      "repeat":"",
      "crontab":"",
      "once":false,
      "onceDelay":"",
      "x":170,
      "y":200,
      "wires":[
         [
            "1ccd705b.07ca2"
         ]
      ]
   },
   {
      "id":"60cfb004.afcc18",
      "type":"inject",
      "z":"f2ce3087.ee968",
      "name":"Angry test",
      "topic":"",
      "payload":"{\"text\":\"I hate this demo\"}",
      "payloadType":"json",
      "repeat":"",
      "crontab":"",
      "once":false,
      "x":180,
      "y":260,
      "wires":[
         [
            "1ccd705b.07ca2"
         ]
      ]
   },
   {
      "id":"e87cc8f9.0d3b1",
      "type":"watson-text-to-speech",
      "z":"f2ce3087.ee968",
      "name":"text to speech",
      "lang":"en-US",
      "langhidden":"en-US",
      "langcustom":"NoCustomisationSetting",
      "langcustomhidden":"",
      "voice":"en-US_AllisonVoice",
      "voicehidden":"es-ES_EnriqueVoice",
      "format":"audio/wav",
      "password":"Go3dEL-Escher-B@ch-climB-0ak5!",
      "apikey":"YptiEGxP7PZK71dQVZq96jBmZZ7Y9KxJcDwYO9Kt5WWp",
      "payload-response":false,
      "default-endpoint":true,
      "service-endpoint":"https://stream.watsonplatform.net/text-to-speech/api",
      "x":840,
      "y":380,
      "wires":[
         [
            "2b50d466.c015dc"
         ]
      ]
   },
   {
      "id":"19037133.924c87",
      "type":"function",
      "z":"f2ce3087.ee968",
      "name":"Remove URLS and replace #",
      "func":"var tweet = msg.tweet.text;\nvar newtweet = tweet.replace(/#/g, \" Hash tag \");\n\n// regex from https://stackoverflow.com/questions/1500260/detect-urls-in-text-with-javascript\nmsg.payload = newtweet.replace( /(([a-z]+:\\/\\/)?(([a-z0-9\\-]+\\.)+([a-z]{2}|biz|com|co|edu|gov|info|net|org|ly))(:[0-9]{1,5})?(\\/[a-z0-9_\\-\\.~]+)*(\\/([a-z0-9_\\-\\.]*)(\\?[a-z0-9+_\\-\\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(\\s+|$)/gi, \"see short URL \" );\nreturn msg;",
      "outputs":1,
      "noerr":0,
      "x":640,
      "y":160,
      "wires":[
         [
            "7e5ec0f9.bbb5a8",
            "37cf1c8a.bf4d54"
         ]
      ]
   },
   {
      "id":"7e5ec0f9.bbb5a8",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"",
      "active":true,
      "tosidebar":true,
      "console":false,
      "tostatus":false,
      "complete":"false",
      "x":870,
      "y":140,
      "wires":[

      ]
   },
   {
      "id":"dffc23d5.a9663",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"Tone categories",
      "active":true,
      "console":"false",
      "complete":"payload",
      "x":880,
      "y":320,
      "wires":[

      ]
   },
   {
      "id":"9a0f3aa8.923ad",
      "type":"function",
      "z":"f2ce3087.ee968",
      "name":"High Score",
      "func":"var emotions = [];\nemotions = msg.response.document_tone.tone_categories\n                .filter(function(c){\n                    if (c.category_id == \"emotion_tone\")\n                    {return c; }\n                    })[0].tones;\n                    \nvar myscore =  0;\nfor (var i=0; i<emotions.length; i++) {\n    if(emotions[i].score > myscore) {\n        msg.payload = emotions[i].score;\n        msg.topic = emotions[i].tone_name;\n        myscore = emotions[i].score;\n    }\n}\n\nreturn msg;",
      "outputs":1,
      "noerr":0,
      "x":170,
      "y":360,
      "wires":[
         [
            "16df6bd0.9e3004",
            "1f4d73c0.0f3c14"
         ]
      ]
   },
   {
      "id":"16df6bd0.9e3004",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"Score",
      "active":true,
      "console":"false",
      "complete":"topic",
      "x":370,
      "y":360,
      "wires":[

      ]
   },
   {
      "id":"677da65d.953ad8",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"Print msg.response",
      "active":true,
      "console":"false",
      "complete":"response",
      "x":630,
      "y":260,
      "wires":[

      ]
   },
   {
      "id":"37cf1c8a.bf4d54",
      "type":"watson-tone-analyzer-v3",
      "z":"f2ce3087.ee968",
      "name":"Analyze Tone",
      "tones":"emotion",
      "sentences":"true",
      "contentType":"false",
      "tone-method":"generalTone",
      "interface-version":"2016-05-19",
      "default-endpoint":true,
      "service-endpoint":"",
      "x":390,
      "y":280,
      "wires":[
         [
            "9a0f3aa8.923ad",
            "677da65d.953ad8",
            "1d5a2d93.b33b62"
         ]
      ]
   },
   {
      "id":"1d5a2d93.b33b62",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"tone_categories",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"response.document_tone.tone_categories",
            "tot":"msg"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":660,
      "y":320,
      "wires":[
         [
            "dffc23d5.a9663"
         ]
      ]
   },
   {
      "id":"1f4d73c0.0f3c14",
      "type":"switch",
      "z":"f2ce3087.ee968",
      "name":"Select Emotion",
      "property":"topic",
      "propertyType":"msg",
      "rules":[
         {
            "t":"eq",
            "v":"Joy",
            "vt":"str"
         },
         {
            "t":"eq",
            "v":"Fear",
            "vt":"str"
         },
         {
            "t":"eq",
            "v":"Sadness",
            "vt":"str"
         },
         {
            "t":"eq",
            "v":"Anger",
            "vt":"str"
         },
         {
            "t":"eq",
            "v":"Disgust",
            "vt":"str"
         }
      ],
      "checkall":"true",
      "repair":false,
      "outputs":5,
      "x":180,
      "y":460,
      "wires":[
         [
            "8b9bb215.7ed26"
         ],
         [
            "3513595e.e6cf3e"
         ],
         [
            "b9003d45.14ee"
         ],
         [
            "6066fca0.647f8c"
         ],
         [
            "554595a.813296c"
         ]
      ]
   },
   {
      "id":"3513595e.e6cf3e",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"Fear",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"0,255,0",
            "tot":"str"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":350,
      "y":460,
      "wires":[
         [
            "6328f1ea.22058"
         ]
      ]
   },
   {
      "id":"6066fca0.647f8c",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"Anger",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"255,0,0",
            "tot":"str"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":390,
      "y":540,
      "wires":[
         [
            "6328f1ea.22058"
         ]
      ]
   },
   {
      "id":"b9003d45.14ee",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"Sadness",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"0,0,255",
            "tot":"str"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":400,
      "y":500,
      "wires":[
         [
            "6328f1ea.22058"
         ]
      ]
   },
   {
      "id":"8b9bb215.7ed26",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"Joy",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"255,255,0",
            "tot":"str"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":350,
      "y":420,
      "wires":[
         [
            "6328f1ea.22058"
         ]
      ]
   },
   {
      "id":"554595a.813296c",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"Disgust",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"221,160,221",
            "tot":"str"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":360,
      "y":580,
      "wires":[
         [
            "6328f1ea.22058"
         ]
      ]
   },
   {
      "id":"6328f1ea.22058",
      "type":"template",
      "z":"f2ce3087.ee968",
      "name":"Score tweet",
      "field":"payload",
      "fieldType":"msg",
      "format":"handlebars",
      "syntax":"mustache",
      "template":"This tweet expresses {{topic}} - {{tweet.text}}",
      "output":"str",
      "x":530,
      "y":440,
      "wires":[
         [
            "ea37a6d8.dd75d",
            "a60e5015.580b68"
         ]
      ]
   },
   {
      "id":"ea37a6d8.dd75d",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"",
      "active":true,
      "console":"false",
      "complete":"false",
      "x":590,
      "y":500,
      "wires":[

      ]
   },
   {
      "id":"a60e5015.580b68",
      "type":"watson-translator",
      "z":"f2ce3087.ee968",
      "name":"",
      "action":"translate",
      "basemodel":"en-tr",
      "domain":"general",
      "srclang":"en",
      "destlang":"es",
      "password":"pmistry@us.ibm.com",
      "apikey":"PF2WfTPM5NuU0ab5DcMJa7t6wqRP3UXu2hlhoFOnFryv",
      "custom":"",
      "domainhidden":"general",
      "srclanghidden":"en",
      "destlanghidden":"es",
      "basemodelhidden":"en-tr",
      "customhidden":"",
      "filetype":"forcedglossary",
      "trainid":"",
      "lgparams2":true,
      "neural":false,
      "default-endpoint":false,
      "service-endpoint":"",
      "x":630,
      "y":380,
      "wires":[
         [
            "e439f7a5.967798",
            "e87cc8f9.0d3b1"
         ]
      ]
   },
   {
      "id":"e439f7a5.967798",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"",
      "active":true,
      "tosidebar":true,
      "console":false,
      "tostatus":false,
      "complete":"payload",
      "targetType":"msg",
      "x":750,
      "y":460,
      "wires":[

      ]
   },
   {
      "id":"2b50d466.c015dc",
      "type":"change",
      "z":"f2ce3087.ee968",
      "name":"",
      "rules":[
         {
            "t":"set",
            "p":"payload",
            "pt":"msg",
            "to":"speech",
            "tot":"msg"
         }
      ],
      "action":"",
      "property":"",
      "from":"",
      "to":"",
      "reg":false,
      "x":1020,
      "y":380,
      "wires":[
         [
            "66c156b2.7d6878"
         ]
      ]
   },
   {
      "id":"66c156b2.7d6878",
      "type":"play audio",
      "z":"f2ce3087.ee968",
      "name":"",
      "voice":"",
      "x":1190,
      "y":380,
      "wires":[

      ]
   },
   {
      "id":"ca3a3fc7.8605d8",
      "type":"twitter in",
      "z":"f2ce3087.ee968",
      "twitter":"",
      "tags":"",
      "user":"false",
      "name":"Listen to twitter feed",
      "inputs":1,
      "x":190,
      "y":60,
      "wires":[
         [
            "edec68ad.93c13",
            "3cef19cd.214e16",
            "19037133.924c87"
         ]
      ]
   },
   {
      "id":"edec68ad.93c13",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"msg.tweet details",
      "active":true,
      "console":"false",
      "complete":"tweet",
      "x":570,
      "y":20,
      "wires":[

      ]
   },
   {
      "id":"3cef19cd.214e16",
      "type":"debug",
      "z":"f2ce3087.ee968",
      "name":"",
      "active":true,
      "console":"false",
      "complete":"tweet.text",
      "x":560,
      "y":60,
      "wires":[

      ]
   },
   {
      "id":"77693eef.07ad08",
      "type":"comment",
      "z":"f2ce3087.ee968",
      "name":"Pick a #hashtag to follow",
      "info":"",
      "x":200,
      "y":20,
      "wires":[

      ]
   }
]

Last updated