01 мая 2023 , Обновлено 27 марта 2024
API доступен только после пополнения баланса
Список всех голосов в формате json.
Доступны 2 варианта озвучки текста по API:
1 вариант - быстрая озвучка коротких текстов.
2 вариант - постановка задачи на озвучку текста.
Урл для 1 варианта: https://zvukogram.com/index.php?r=api/text
У данного варианта есть ограничение - максимум 1000 символов. В случае превышения лимитов получим ошибку (status = -1).
$data = [
'token'=>'СекретныйКлючДоступныйВЛичномКабинете',
'email'=>'yourMail@gmail.com',
'voice'=>'Владимир',
'text'=>"Текст для синтеза речи",
'format'=>'mp3',
'speed'=>1.1,
'pitch'=>0.8,
'emotion'=>'good',
'pause_sentence'=>300,
'pause_paragraph'=>400,
'bitrate'=>48000,
];
'token' - 'СекретныйКлючДоступныйВЛичномКабинете'
'email' - 'ВашаПочта@gmail.com'
'voice' - 'Голос'
'text' - 'Текст который будет озвучен'
'format' - формат результирующего файла, по умолчанию = mp3, доступные значения ( 'mp3', 'wav', 'ogg', 'opus')
'speed' - скорость воспроизведения, по умолчанию 1, (диапазон от 0.1 до 2.0)
'pitch'- высота голоса, по умолчанию 0, (диапазон от -20 до 20)
'emotion' - эмоциональный окрас голоса, по умолчанию 'good', доступные значения ( 'good', 'evil', 'neutral'). *
'pause_sentence' - Размер паузы между предложениями в ms.
'pause_paragraph' - Размер паузы между абзацами в ms.
'bitrate'=>48000 - Битрейт от 8000 до 192000 Hz.
* emotion Доступен не для всех голосов, смотреть здесь
{
"id":"4153594",
"status":"0",
"file":"result.mp3",
"file_cors":"result_cors.mp3",
"parts":"5",
"parts_done":"2",
"duration":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.06"
}
"id" - уникальный идентификатор озвучки "status" - текущий статус озвучки. Доступны 2 значения: 1 - завершен успешно -1 - ошибка
"file" - путь до аудио файла, доступен если status = 1
"file_cors" - путь до аудио файла CORS "error" - текст ошибки, в случае, если status = -1 "
parts" - число фрагментов озвучки
"parts_done" - число фрагментов завершенных
"duration" - длительность аудио файла в секундах, доступен если status = 1
"format" - формат аудиофайла
"balans" - остаток на балансе в токенах
"cost" - затраты на озвучку. (увеличивается по мере озвучки фрагментов)
$data = [
'token' => '123456',
'email' => 'mail@mail.com',
'voice' => 'Владимир',
'text' => "Текст который будет озвучен",
'format' => 'mp3',
'speed' => 1.1,
'pitch' => 0,
'emotion' => 'good',
];
$url = "https://zvukogram.com/index.php?r=api/text";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
var_dump($response);
$response = json_decode($response, true);
if (curl_errno($ch)) {
var_dump("Ошибка соединения с сервером распознавания текстов, " . curl_error($ch));
} else {
var_dump($response);
if ($response["status"] == 1) {
//Скопируем себе файл echo "vse ok "
echo " ok " . $response["file"];
copy($response["file"], 'ИмяФайла.' . $response["format"]);
} else {
//Ошибка, озвучка невозможна
echo $response["error"];
}
}
curl_close($ch);
Шаг 1: Текст отправляется на API и получаем уникальный идентификатор озвучки (id).
Шаг 2: Запрашиваем результат озвучки , отправив идентификатор озвучки (id).
Данный метод не имеет ограничений и позволяет озвучивать текста до 1000 000 символов. Озвучка происходит в порядке очереди (первый пришел, первый обработан) и может занимать от 1 до нескольких минут в зависимости от длинны текста.
$data = [
'token'=>'СекретныйКлючДоступныйВЛичномКабинете',
'email'=>'ВашаПочта@gmail.com',
'voice'=>'Владимир',
'text'=>"Текст который будет озвучен",
'format'=>'mp3',
'speed'=>1.1,
'pitch'=>0.8,
'emotion'=>'good',
'pause_sentence'=>300,
'pause_paragraph'=>400,
'bitrate'=>48000,
];
'token' - 'СекретныйКлючДоступныйВЛичномКабинете'
'email' - 'ВашаПочта@gmail.com'
'voice' - 'Голос'
'text' - 'Текст который будет озвучен'
'format' - формат результирующего файла, по умолчанию = mp3, доступные значения ( 'mp3', 'wav', 'ogg', 'opus')
'speed' - скорость воспроизведения, по умолчанию 1, (диапазон от 0.1 до 2.0)
'pitch'- высота голоса, по умолчанию 0, (диапазон от -20 до 20)
'emotion' - эмоциональный окрас голоса, по умолчанию 'good', доступные значения ( 'good', 'evil', 'neutral').
'pause_sentence' - Размер паузы между предложениями в ms.
'pause_paragraph' - Размер паузы между абзацами в ms.
'bitrate'=>48000 - Битрейт от 8000 до 192000 Hz.
emotion Доступен не для всех голосов, смотреть здесь
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - уникальный идентификатор озвучки
"status" - текущий статус озвучки. Доступны 2 значения:
1 - задание на озвучку создано успешно
-1 - ошибка
"error" - текст ошибки, в случае, если status = -1
"parts" - число фрагментов озвучки
"parts_done" - число фрагментов завершенных
"format" - формат аудиофайла
"balans" - остаток на балансе в токенах
"cost" - затраты на озвучку. (увеличивается по мере озвучки фрагментов)
Шаг 2. После создания задачи и получения идентификатора (id), необходим отправить запроса на https://zvukogram.com/index.php?r=api/result, чтобы узнать результат.
$data = [
'token'=>'СекретныйКлючДоступныйВЛичномКабинете',
'email'=>'ВашаПочта@gmail.com',
'id'=>4153594,
];
'token' - СекретныйКлючДоступныйВЛичномКабинете
'email' - ВашаПочта@gmail.com
'id' - Уникальный идентификатор озвучки полученный на шаге 1
{
"id":"4153594",
"status":"0",
"file":"result.mp3",
"cuts":["result_1.mp3","result_2.mp3",...],
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - уникальный идентификатор озвучки
"status" - текущий статус озвучки. Доступны 3 значения: 0 - в процессе 1 - завершен успешно -1 - ошибка
"file" - путь до аудио файла, доступен если status = 1
"error" - текст ошибки, в случае, если status = -1
"parts" - число фрагментов озвучки
"parts_done" - число фрагментов завершенных
"duration" - длительность аудио файла в секундах, доступен если status = 1
"format" - формат аудиофайла
"balans" - остаток на балансе в токенах
"cost" - затраты на озвучку. (увеличивается по мере озвучки фрагментов)
"cuts" - Массив фрагментов, если используется тег obrezka в тексте
//STEP 1
$data = [
'token' => '123456',
'email' => 'mail@mail.com',
'voice' => 'Владимир',
'text' => "Текст который будет озвучен",
'format' => 'mp3',
'speed' => 1.1,
'pitch' => 0,
'emotion' => 'good',
];
$url = "https://zvukogram.com/index.php?r=api/longtext";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
var_dump($response);
$response = json_decode($response, true);
$resultId = 0;
if (curl_errno($ch)) {
var_dump("Ошибка соединения с сервером распознавания текстов, " . curl_error($ch));
} else {
var_dump($response);
if ($response["status"] == 1) {
//Copy
echo " ok " . $response["file"];
copy($response["file"], 'FileName.' . $response["format"]);
} elseif ($response["status"] == 0) {
//Запомними идентификатор озвучки, и запросим результат позже
$resultId = $response["id"];
} else {
//Ошибка, озвучка невозможна
echo $response["error"];
}
}
curl_close($ch);
//STEP 2
// Каждую минуту делаем запрос-проверку результата
if($resultId){
$data = [
'token'=>'123456',
'email'=>'mail@mail.com',
'id'=>$resultId,
];
$url = "https://zvukogram.com/index.php?r=api/result";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
var_dump($response);
$response = json_decode($response,true);
if (curl_errno($ch)) {
var_dump("Error in connecting to the text recognition server, ".curl_error($ch));
}else{
var_dump($response);
if($response["status"] == 1){
//Скопируем себе файл
echo " ok ".$response["file"];
copy($response["file"], 'FileMane.' . $response["format"]);
}elseif($response["status"] == 0){
//Еще не готово запросим результат позже
echo "In process...";
}else{
//Ошибка, озвучка невозможна
echo $response["error"];
}
}
curl_close($ch);
}