tts (Premium)
- 印刷する
- PDF
tts (Premium)
- 印刷する
- PDF
Article Summary
Share feedback
Thanks for sharing your feedback!
概要
CLOVA Voice - Premium APIは音声に変換するテキストと声、速度、感情などをパラメータとして入力した後、音声を合成してその結果を返す HTTPベースの REST APIです。
リクエスト
curl -i -X POST \
-H "Content-Type:application/x-www-form-urlencoded" \
-H "X-NCP-APIGW-API-KEY-ID:{アプリケーション登録時に発行された client id値}" \
-H "X-NCP-APIGW-API-KEY:{アプリケーション登録時に発行された client secret値}" \
-d ‘speaker={声の種類}&text={テキスト}&volume={ボリューム}&speed={音声再生速度}&pitch={ピッチ}’ \
'https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts'
リクエストパラメータ
パラメータ名 | タイプ | 説明 | デフォルト値 | 要否 |
---|---|---|---|---|
speaker | string | 音声合成に使用する声の種類
| なし | Y |
text | string | - 音声合成する文章 - UTF-8 エンコードされたテキストのみサポート - 最大 2000字まで音声合成 - 記号や括弧内のテキストは読まない | なし | Y |
volume | integer | - 音声ボリューム - (-)5から5間の整数値 - (-)5なら0.5倍低いボリューム、5なら1.5倍大きいボリューム、0なら正常ボリュームで音声合成 | 0 | N |
speed | integer | - 音声速度 - (-)5から5間の整数値 - (-)5なら2倍速い速度、5なら0.5倍遅い速度、0なら正常速度で音声合成 | 0 | N |
pitch | integer | - 音声ピッチ - (-)5から5間の整数値 - (-)5なら1.2倍高いピッチ、5なら0.8倍低いピッチ、0なら正常ピッチで音声合成 | 0 | N |
emotion | integer | - 音声の感情 - 0から3間の整数値 - 対応 speaker: nara、vara、vmikyung、vdain、vyuna(ただし、naraは 3: 怒り未対応) | 0 | N |
emotion-strength | integer | - 感情の強度 - 対応 speaker: vara、vmikyung、vdain、vyuna(naraは未対応) | 1 | N |
format | string | - 音声フォーマット - mp3または wav | mp3 | N |
sampling-rate | integer | - サンプリングレート - wavフォーマット時のみ対応し、mp3フォーマットは24000から変更不可 ただし、mijinは16000のみ対応 | 24000 | N |
alpha | integer | - 声 - (-)5から5間の整数値 - 0より大きいと高い声、0より小さいと低い声 | 0 | N |
end-pitch | integer | - 最後の音処理 - (-)5から5間の整数値 0より大きいと文末を上げ、0より小さいと文末を下げる - 対応 speaker: 「d」で始まる speaker(ex.dara、danna..)と clara、matt、meimei、 liangliang、chiahua、kuanlin、carmen、jose | 0 | N |
リクエストヘッダ
ヘッダ名 | 説明 |
---|---|
X-NCP-APIGW-API-KEY-ID | アプリ登録時に発行された Client IDX-NCP-APIGW-API-KEY-ID:{Client ID} |
X-NCP-APIGW-API-KEY | アプリ登録時に発行された Client SecretX-NCP-APIGW-API-KEY:{Client Secret} |
Content-Type | application/x-www-form-urlencodedに固定Content-Type: application/x-www-form-urlencoded |
リクエストボディ
- 該当 APIは、リクエストボディが不要です。
レスポンス
レスポンスボディ
- MP3または WAVバイナリデータ
例
リクエスト例
curl -i -X POST \
-H "Content-Type:application/x-www-form-urlencoded" \
-H "X-NCP-APIGW-API-KEY-ID:{アプリケーション登録時に発行された client id値}" \
-H "X-NCP-APIGW-API-KEY:{アプリケーション登録時に発行された client secret値}" \
-d 'speaker=nara&text=お会いできて嬉しいです&volume=0&speed=0&pitch=0&format=mp3' \
'https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts'
レスポンス例
[HTTP Response Header]
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 09 Sep 2020 02:35:50 GMT
Content-Type: audio/mpeg
Content-Length: 15216
Connection: keep-alive
Keep-Alive: timeout=5
Playtime: 1890
X-Chars-Count: 6
X-QUOTA: 1
X-Ssgw-Request-Id: f53c46c5-cce6-4943-b986-47ba752f8937
X-Text-Length: 26
[HTTP Response Body]
{MP3形式のバイナリデータ}
APIのユースケース
// NAVER音声合成 Open 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);
}
}
}
// NAVER音声合成 Open 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 "Error内容:".$response;
}
?>
// NAVER音声合成 Open 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!');
});
// NAVER音声合成 Open 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)
# -*- coding: utf-8 -*-
import os
import sys
import urllib
import urllib2
reload(sys)
sys.setdefaultencoding('utf-8')
client_id = "YOUR_CLIENT_ID" # アプリケーションクライアント 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)
// NAVER音声合成 Open 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");
}
}
}
curl "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts" \
-d "speaker=nara&volume=0&speed=0&pitch=0&format=mp3&text=お会いできて光栄です。" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "X-NCP-APIGW-API-KEY-ID: {アプリケーション登録時に発行された client id値}" \
-H "X-NCP-APIGW-API-KEY: {アプリケーション登録時に発行された client secret値}" -v \
> out.mp3
エラーコード
HttpStatusCode | ErrorCode | ErrorMessage | Description |
---|---|---|---|
400 | VS01 | speaker parameter is needed. | speakerパラメータの漏れ |
400 | VS02 | Unsupported speaker. | 対応しない speakerパラメータ |
400 | VS03 | Speed parameter is needed. | speedパラメータの漏れ |
400 | VS04 | Unsupported speed. | 対応しない speedパラメータ |
400 | VS05 | text parameter is needed. | textパラメータの漏れ |
400 | VS06 | text parameter exceeds max length. | textパラメータ入力文字数超過 |
400 | VS07 | Unsupported volume. | 対応しないボリューム |
400 | VS08 | Unsupported pitch. | 対応しないピッチ |
400 | VS09 | Unsupported alpha. | 対応しない声 |
400 | VS10 | Text parameter check. | 合成できない text存在 |
400 | VS11 | Unsupported format. | 対応しないフォーマット |
400 | VS14 | Unsupported emotion value. | 対応しない感情パラメータ |
400 | VS18 | Text parameter exceeds max length per sentence. | 文章当たり最大長さ(200字)超過 |
400 | VS19 | Unsupported emotion-strength. | 対応しない感情の強度 |
400 | VS26 | Failed to make tts. | TTS作成失敗 |
400 | VS46 | Unsupported end-pitch. | 対応しない最後の音処理 |
500 | VS99 | Internal server error | サーバ内部エラー発生 カスタマーサポート問い合わせが必要 |
この記事は役に立ちましたか?