Преобразование текста в речь с помощью Amazon Polly в PHP
Amazon Polly – это отличный облачный сервис, который позволяет нам преобразовывать текст в реалистичную речь. Кроме того, Amazon Polly обеспечивает революционное улучшение качества речи за счет нового подхода к машинному обучению. Они предлагают клиентам наиболее естественные и похожие на человека голоса для преобразования текста в речь.
Преимущества использования Amazon Polly:
- Высокого качества
- Низкая задержка
- Поддержка большого портфолио языков и голосов
- Экономически эффективным
- Облачное решение
Amazon Polly может быть полезен в нескольких приложениях. Некоторые из них – такие приложения, как программы чтения новостей. игры, платформы электронного обучения, приложения для людей с ослабленным зрением и т. д. Вы можете узнать больше об этой услуге в их документации.
В этой статье я покажу вам, как преобразовать текст в речь с помощью Amazon Polly и PHP.
Консоль Amazon Polly
Если вы не хотите создавать приложение PHP, вы можете напрямую использовать консоль Polly. Вы можете получить к нему доступ, войдя в свою учетную запись AWS. После входа перейдите в консоль Amazon Polly. На этой странице вы получите параметры для добавления речи в формате обычного текста или SSML. Вы можете выбрать регион, идентификатор голоса и прослушать речь или даже скачать ее в формате MP3.
Использование консоли – это один из вариантов, если вы являетесь администратором и не хотите никому делиться учетными данными. Но что, если вы хотите создать приложение, которое точно выполняет задачу преобразования текста в речь и позволяет загружать преобразованную речь в формате MP3.
Преобразование текста в речь с использованием Amazon Polly и PHP
Чтобы создать приложение PHP для Amazon Polly, сначала необходимо получить учетные данные безопасности AWS. Вы можете получить его, войдя в учетную запись AWS и нажав «Мои учетные данные для безопасности».
Получив учетные данные, установите AWS SDK для PHP с помощью Composer. Выполните приведенную ниже команду для установки библиотеки.
composer require aws/aws-sdk-php
После установки создайте форму, которая позволяет пользователю загрузить файл и отправить его на сервер для его обработки.
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<button type="submit" name="submit">Submit</button>
</form>
Как упоминалось ранее, пользователь может передавать речь либо в текстовом формате, либо в формате SSML. Я предпочитаю использовать SSML, который позволяет нам контролировать сгенерированную речь из предоставленного текста. Используя SSML, мы можем включить паузу в текст, изменить скорость речи, выделить определенные слова или фразы и т.д. Подробнее об этом читайте в разделе Использование SSML. По сути, вам нужно использовать в тексте теги, предоставляемые SSML.
В этом руководстве я создаю простой текстовый файл с тегами SSML. Мой текстовый файл выглядит следующим образом.
dummy.txt
<speak>
<prosody rate='medium'>Hi, I am Sajid. I do blogging at Artisans Web.</prosody>
</speak>
Затем при отправке формы загруженный текстовый файл будет отправлен в облачный сервис AWS, а файлы MP3 будут загружены автоматически. Напишите для него код следующим образом.
<?php
require_once "vendor/autoload.php";
use AwsPollyPollyClient;
if (isset($_POST['submit'])) {
try {
$config = [
'version' => 'latest',
'region' => 'YOUR_AWS_REGION',
'credentials' => [
'key' => 'ACCESS_KEY_ID',
'secret' => 'SECRET_ACCESS_KEY',
]
];
$client = new PollyClient($config);
$args = [
'OutputFormat' => 'mp3',
'Text' => file_get_contents($_FILES['file']['tmp_name']),
'TextType' => 'ssml',
'VoiceId' => 'Matthew', //pass preferred voice id here
];
$result = $client->synthesizeSpeech($args);
$resultData = $result->get('AudioStream')->getContents();
header('Content-length: '. strlen($resultData));
header('Content-Disposition: attachment; filename="text-to-speech.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
echo $resultData;
} catch(Exception $e) {
echo $e->getMessage();
}
}
?>
Замените заполнители фактическими значениями. В приведенном выше коде я передал значение VoiceId – Matthew. «Мэтью» – это голосовой идентификатор, который добавляет речевой акцент на английском (США) (en-US) языке. Конечно, пользователь может выбрать любой предпочтительный голосовой идентификатор. Вы получите список доступных голосов на их странице «Голоса в Amazon Polly».
Идите и проверьте это. При загрузке текстового файла вы получите аудиофайл с текстом в формате MP3.
Все дело в преобразовании текста в речь с помощью Amazon Polly на PHP. Я хотел бы услышать ваши мысли или предложения в разделе комментариев ниже.
Статьи по Теме
- Загрузка файлов в Amazon S3 с помощью AWS PHP SDK
- Как загрузить файл на S3 с помощью файловой системы Laravel