CLOVA Voiceのユースケース
    • PDF

    CLOVA Voiceのユースケース

    • PDF

    記事の要約

    Classic/VPC環境で利用できます。

    CLOVA Voice TTS (Premium) APIを使用するユースケースを紹介します。

    CLOVA Voice TTS (Premium)

    変換対象のテキストと音色、スピード、感情などをパラメータで渡されて音声を合成する CLOVA Voice APIのユースケースを説明します。

    Java

    Javaベースの 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";//アプリケーションクライアント ID値";
            String clientSecret = "YOUR_CLIENT_SECRET";//アプリケーションクライアントのシークレット値";
            try {
                String text = URLEncoder.encode("こんにちは。", "UTF-8"); // 13文字
                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) { // 正常な呼び出し
                    InputStream is = con.getInputStream();
                    int read = 0;
                    byte[] bytes = new byte[1024];
                    // ランダムな名前で mp3ファイルを作成
                    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 {  // エラー発生
                    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

    Pythonベースの CLOVA Voice APIのサンプルコードは次の通りです。

    import os
    import sys
    import urllib.request
    client_id = "YOUR_CLIENT_ID"
    client_secret = "YOUR_CLIENT_SECRET"
    encText = urllib.parse.quote("こんにちは、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("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("こんにちは、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

    PHPベースの CLOVA Voice APIのサンプルコードは次の通りです。

    <?php
      $client_id = "YOUR_CLIENT_ID";
      $client_secret = "YOUR_CLIENT_SECRET";
      $encText = urlencode("こんにちは。");
      $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'>TTS再生</a>";
      } else {
        echo "エラー内容: ".$response;
      }
    ?>
    

    JavaScript

    JavaScriptベースの 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: '良い一日を', 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); // fileで出力
      _req.pipe(res); // ブラウザで出力
    });
    app.listen(3000, function() {
      console.log('http://127.0.0.1:3000/tts app listening on port 3000!');
    });
    

    C#

    C# ベースの 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 = "良い一日を。"; // 音声合成対象の文字列
                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");
            }
        }
    }
    

    この記事は役に立ちましたか?

    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.