近年、テキスト音声変換サービスは、AIの進化により大幅な改善を遂げています。
本記事では、GoogleのCloud Text-to-SpeechとAmazonのAmazon Pollyの比較を行い、
それぞれの特徴や利点を解説します。
テキスト音声サービスについてお困り事がある方は、下記よりお問い合わせ下さい。
目次
サービスの概要
GoogleのCloud Text-to-SpeechとAmazonのAmazon Pollyは、
テキストを自然でリアルな音声に変換できるサービスです。
いずれのサービスも多様な言語と声質をサポートし、高品質な合成音声を提供します。
言語サポート
いずれのサービスもたくさんの言語に対応しています。
英語、日本語、中国語、スペイン語など、様々な言語が使えますが、
特にGoogle Cloud Text-to-Speechは多いです。
一方、Amazon Pollyは、主要な言語に焦点を当てていますが、それでも使える言語は多いです。
Google Cloud Text-to-Speechの音声リストはこちら音声と実装例
各サービスを使用して生成した音声と実装例を以下に示します。
Google Cloud Text-to-SpeechはJavaScriptで実装し、Amazon PollyはPHPで実装しました。
実際に動かすには、APIキーやアクセスキーの設定、ライブラリの導入などが必要です。
また、キーは外部に流出しないように扱いにはご注意ください。
Google Cloud Text-to-Speech
Amazon Polly
Google Cloud Text-to-Speechの実装例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<button onclick='speak("ここに変換するテキストを入力してください");' style="width: 100px; height: 100px">発声</button>
</body>
<script>
function speak(text) {
const apiKey = ""; // あなたのAPIキーをここに追加してください
const url = `https://texttospeech.googleapis.com/v1/text:synthesize?key=${apiKey}`;
const data = {
input: {
text: text,
},
voice: {
languageCode: "en-US",
name: "en-US-Standard-C",
},
audioConfig: {
audioEncoding: "MP3",
speakingRate: "1.00",
pitch: "0.00",
},
};
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json; charset=UTF-8",
},
body: JSON.stringify(data),
})
.then((response) => {
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.json();
})
.then((json) => {
if (json.audioContent) {
const audioContent = json.audioContent;
downloadBase64(audioContent, "Google.mp3");
} else {
console.error("No audio content received");
}
})
.catch((error) => console.error("Error:", error));
}
function downloadBase64(base64Data, fileName) {
const byteCharacters = atob(base64Data);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
const blob = new Blob([byteArray], { type: "audio/mp3" });
const blobUrl = URL.createObjectURL(blob);
downloadBlob(blobUrl, fileName);
}
function downloadBlob(blobUrl, fileName) {
const downloadLink = document.createElement("a");
downloadLink.href = blobUrl;
downloadLink.download = fileName;
downloadLink.click();
}
</script>
</html>
Amazon Pollyの実装例
<?php
require 'vendor/autoload.php'; // AWS SDKのautoloadファイルを読み込みます
use Aws\Polly\PollyClient; // PollyClientを使用します
// AWS認証情報を設定します
$accessKey = ''; //ここにkeyを入力してください
$secretKey = ''; //ここにkeyを入力してください
$credentials = new Aws\Credentials\Credentials($accessKey, $secretKey);
// Pollyクライアントを作成します
$pollyClient = new PollyClient([
'version' => 'latest',
'region' => 'ap-northeast-1', // 使用するAWSリージョンを指定します
'credentials' => $credentials // AWS認証情報を設定します
]);
// 変換するテキストを指定します
$text = ''; // ここに変換するテキストを入力してください
// Pollyによる音声合成をリクエストします
$result = $pollyClient->synthesizeSpeech([
'OutputFormat' => 'mp3', // 出力フォーマットを指定します
'Text' => $text, // 変換するテキストを指定します
'TextType' => 'text',
'VoiceId' => 'Joanna' // 使用する声のIDを指定します
]);
// 音声データを取得します
$audioStream = $result['AudioStream']->getContents();
// 音声データをファイルに保存します
file_put_contents('output.mp3', $audioStream);
echo 'Audio file saved as output.mp3';
?>
料金
GoogleのText-to-SpeechとAmazon Pollyの料金は類似しています。
どちらも基本的には使用量に応じて課金されますが、無料枠の設定があり条件に違いがあります。
詳細な料金プランは、各サービスの公式ドキュメントで確認ができます。
「Google Cloud Text-to-Speech」の料金表
特徴 | 1 か月あたりの無料枠 | 無料の使用量上限に到達した場合の料金 |
---|---|---|
Neural2 音声 | 0 ~ 100 万バイト | 1 バイトあたり 0.000016 米ドル(100 万バイトあたり 16 米ドル) |
多言語音声(プレビュー)音声 | 0 ~ 100 万バイト | 1 バイトあたり 0.000016 米ドル(100 万バイトあたり 16 米ドル) |
Studio(プレビュー)の音声 | 0 ~ 10 万バイト | 1 バイトあたり 0.00016 米ドル(100 万バイトあたり 160 米ドル) |
標準音声 | 0〜400 万文字 | 1 文字あたり 0.000004 米ドル(100 万文字あたり 4 米ドル) |
WaveNet 音声 | 0〜100 万文字 | 1 文字あたり 0.000016 米ドル(100 万文字あたり 16 米ドル) |
「Amazon Polly」の料金表
例 | テキストの長さ | 音声の長さ | 標準 TTS コスト | ニューラル TTS コスト | ロングフォーム TTS コスト |
リクエスト 1,000 件、リクエスト 1 件あたり 1,000 文字 | 100 万文字 | ~ 23 時間 8 分 | 4.00 USD | 16.00 USD | 100.00 USD |
リクエスト 1 万件、リクエスト 1 件あたり 100 文字 | 100 万文字 | ~ 23 時間 8 分 | 4.00 USD | 16.00 USD | 100.00 USD |
2016 年度 Amazon 株主様宛ての手紙 | 1,300 文字、1 ページ | ~ 1 分 40 秒 | 0.005 USD | 0.021 USD | 0.13 USD |
平均的な E メールメッセージ | ~ 3,100 文字 | ~ 4 分 | 0.01 USD | 0.05 USD | 0.31 USD |
典型的なニュース記事 | ~ 6,500 文字、3 ページ | ~ 9 分 | 0.03 USD | 0.10 USD | 0.65 USD |
『クリスマスキャロル』、チャールズ・ディケンズ著 | ~ 16 万 5,000 文字、64 ページ | ~ 3 時間 50 分 | 0.66 USD | 2.64 USD | 16.50 USD |
『ハックルベリー・フィンの冒険』、マーク・トゥエイン著 | ~ 60 万文字、224 ページ | ~ 13 時間 50 分 | 2.40 USD | 9.60 USD | 60.00 USD |
アニメーション動画: – ナレーションテキスト 1 つの平均の長さ: 100 文字 – アニメーション作品 1 作あたりのナレーションテキストの数: 25 | アニメーション 1 作あたり 2,500 文字 | ~ 3 分 30 秒 | 0.01 USD | 0.04 USD | 0.25 USD |
対話的アプリケーション: – 平均的な応答音声の長さ: 100 文字 – 各ユーザーの 1 か月あたりのリクエスト数: 300 件 | 各ユーザーについて 1 か月あたり 30,000 文字 | ~ 42 分 | 0.12 USD | 0.48 USD | 3.00 USD |
アニメーションアバター: – アバターのフレーズ 1 つの平均の長さ: 100 文字 – アバターで使用するフレーズ数: 25 – 口の動きを同期させるために必要とする Speech Marks | 同期させる音声 2,500 文字Speech Marks データ 2,500 文字 | ~ 3 分 30 秒 | 0.02 USD | 0.08 USD | 0.50 USD |
ハイライトテキストによる子供向けのストーリーテリング – 物語のテキストの長さ: 10,000 文字 – ハイライトテキストを同期させるために必要とする Speech Marks | 同期させる音声 10,000 文字Speech Marks データ 10,000 文字 | ~ 13 分 | 0.08 USD | 0.32 USD | 2.00 USD |
ウェブサービスやスマホアプリに利用
また、弊社では、どちらのサービスもウェブサービスやスマートフォンアプリから利用する環境を構築できます。
自社のウェブサイトやアプリに追加して、さらに便利に使ってみませんか?
お問い合わせ
テキスト音声変換を使ったサービスに関するご相談、お問合せ、お待ちいたしております!