CLOVA Voice examples
    • PDF

    CLOVA Voice examples

    • PDF

    Article summary

    Available in Classic and VPC

    This document introduces examples of using the CLOVA Voice TTS (Premium) API.

    CLOVA Voice TTS (Premium)

    This section describes examples of the CLOVA Voice API that synthesizes speech from text to be converted and parameters such as tone, speed, and emotion.

    Java

    The following is a Java-based sample code for the CLOVA Voice API.

    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.Date;
    
    public class APIExamTTS {
    
        public static void main(String[] args) {
            String clientId = "YOUR_CLIENT_ID";//Application's client ID value";
            String clientSecret = "YOUR_CLIENT_SECRET";//Application's client secret value";
            try {
                String text = URLEncoder.encode("Nice to meet you.", "UTF-8"); // 13 characters
                String apiURL = "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts";
                URL url = new URL(apiURL);
                HttpURLConnection con = (HttpURLConnection)url.openConnection();
                con.setRequestMethod("POST");
                con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
                con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
                // post request
                String postParams = "speaker=nara&volume=0&speed=0&pitch=0&format=mp3&text=" + text;
                con.setDoOutput(true);
                DataOutputStream wr = new DataOutputStream(con.getOutputStream());
                wr.writeBytes(postParams);
                wr.flush();
                wr.close();
                int responseCode = con.getResponseCode();
                BufferedReader br;
                if(responseCode==200) { // Successful call
                    InputStream is = con.getInputStream();
                    int read = 0;
                    byte[] bytes = new byte[1024];
                    // Create an MP3 file with a random name
                    String tempname = Long.valueOf(new Date().getTime()).toString();
                    File f = new File(tempname + ".mp3");
                    f.createNewFile();
                    OutputStream outputStream = new FileOutputStream(f);
                    while ((read =is.read(bytes)) != -1) {
                        outputStream.write(bytes, 0, read);
                    }
                    is.close();
                } else {  // Error occurred
                    br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
                    String inputLine;
                    StringBuffer response = new StringBuffer();
                    while ((inputLine = br.readLine()) != null) {
                        response.append(inputLine);
                    }
                    br.close();
                    System.out.println(response.toString());
                }
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    

    Python

    The following is a Python-based sample code for the CLOVA Voice API.

    import os
    import sys
    import urllib.request
    client_id = "YOUR_CLIENT_ID"
    client_secret = "YOUR_CLIENT_SECRET"
    encText = urllib.parse.quote("Nice to meet you, NAVER.")
    data = "speaker=nara&volume=0&speed=0&pitch=0&format=mp3&text=" + encText;
    url = "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts"
    request = urllib.request.Request(url)
    request.add_header("X-NCP-APIGW-API-KEY-ID",client_id)
    request.add_header("X-NCP-APIGW-API-KEY",client_secret)
    response = urllib.request.urlopen(request, data=data.encode('utf-8'))
    rescode = response.getcode()
    if(rescode==200):
        print("Save TTS MP3")
        response_body = response.read()
        with open('1111.mp3', 'wb') as f:
            f.write(response_body)
    else:
        print("Error Code:" + rescode)
    
    import os
    import sys
    import urllib
    import urllib2
    reload(sys)
    sys.setdefaultencoding('utf-8')
    client_id = "YOUR_CLIENT_ID" 
    client_secret = "YOUR_CLIENT_SECRET" 
    text = unicode("Nice to meet you, NAVER.")
    speaker = "nara"
    speed = "0" 
    volume = "0" 
    pitch = "0" 
    fmt = "mp3" 
    val = {
        "speaker": speaker,
        "volume": volume,
        "speed":speed,
        "pitch": pitch,
        "text":text,
        "format": fmt
    }
    data = urllib.urlencode(val)
    url = "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts"
    headers = {
        "X-NCP-APIGW-API-KEY-ID" : client_id,
        "X-NCP-APIGW-API-KEY" : client_secret
    }
    request = urllib2.Request(url, data, headers)
    response = urllib2.urlopen(request)
    rescode = response.getcode()
    if(rescode==200):
        print("TTS mp3 save")
        response_body = response.read()
        with open('1111.mp3', 'wb') as f:
            f.write(response_body)
    else:
        print("Error Code:" + rescode)
    

    PHP

    The following is a PHP-based sample code for the CLOVA Voice API.

    <?php
      $client_id = "YOUR_CLIENT_ID";
      $client_secret = "YOUR_CLIENT_SECRET";
      $encText = urlencode("Nice to meet you.");
      $postvars = "speaker=nara&volume=0&speed=0&pitch=0&format=mp3&text=".$encText;
      $url = "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts";
      $is_post = true;
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_POST, $is_post);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
      $headers = array();
      $headers[] = "X-NCP-APIGW-API-KEY-ID: ".$client_id;
      $headers[] = "X-NCP-APIGW-API-KEY: ".$client_secret;
      curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
      $response = curl_exec ($ch);
      $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      echo "status_code:".$status_code."<br />";
      curl_close ($ch);
      if($status_code == 200) {
        //echo $response;
        $fp = fopen("tts.mp3", "w+");
        fwrite($fp, $response);
        fclose($fp);
        echo "<a href='tts.mp3'>Play TTS</a>";
      } else {
        echo "Error content:".$response;
      }
    ?>
    

    JavaScript

    The following is a JavaScript-based sample code for the CLOVA Voice API.

    var express = require('express');
    var app = express();
    var client_id = 'YOUR_CLIENT_ID';
    var client_secret = 'YOUR_CLIENT_SECRET';
    var fs = require('fs');
    app.get('/tts', function(req, res) {
      var api_url = 'https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts';
      var request = require('request');
      var options = {
        url: api_url,
        form: { speaker: 'nara', volume: '0', speed: '0', pitch: '0', text: 'Have a nice day', format: 'mp3' },
        headers: { 'X-NCP-APIGW-API-KEY-ID': client_id, 'X-NCP-APIGW-API-KEY': client_secret },
      };
      var writeStream = fs.createWriteStream('./tts1.mp3');
      var _req = request.post(options).on('response', function(response) {
        console.log(response.statusCode); // 200
        console.log(response.headers['content-type']);
      });
      _req.pipe(writeStream); // Output to file
      _req.pipe(res); // Output to browser
    });
    app.listen(3000, function() {
      console.log('http://127.0.0.1:3000/tts app listening on port 3000!');
    });
    

    C#

    The following is a C#-based sample code for the CLOVA Voice API.

    using System;
    using System.Net;
    using System.Text;
    using System.IO;
    
    namespace NaverAPI_Guide
    {
        public class APIExamTTS
        {
            static void Main(string[] args)
            {
                string text = "Have a nice day."; // Text value to speech synthesize
                string url = "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts";
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Headers.Add("X-NCP-APIGW-API-KEY-ID", "YOUR-CLIENT-ID");
                request.Headers.Add("X-NCP-APIGW-API-KEY", "YOUR-CLIENT-SECRET");
                request.Method = "POST";
                byte[] byteDataParams = Encoding.UTF8.GetBytes("speaker=nara&volume=0&speed=0&pitch=0&format=mp3&text=" + text);
                request.ContentType = "application/x-www-form-urlencoded";
                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);
                using (Stream output = File.OpenWrite("c:/tts.mp3"))
                using (Stream input = response.GetResponseStream())
                {
                    input.CopyTo(output);
                }
                Console.WriteLine("c:/tts.mp3 was created");
            }
        }
    }
    

    Was this article helpful?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.