MENU
      CLOVA Voice examples

        CLOVA Voice examples


        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);
                }
            }
        }
        Java

        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)
        Python
        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)
        Python

        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;
          }
        ?>
        PHP

        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!');
        });
        JavaScript

        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");
                }
            }
        }
        Plain text

        Was this article helpful?

        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.