会社概要
サービス
特徴
システム
デザイン
制作例
Smile Design
お客様の声
ブログ
他社紹介
採用情報
採用情報
リクルートサイト
お問い合わせ
プライバシーポリシー
個人情報保護方針
品質方針
録音録画の取扱いについて
情報セキュリティ基本方針
ログイン

GoogleとAmazon: テキスト音声変換サービスを比較しました!

近年、テキスト音声変換サービスは、AIの進化により大幅な改善を遂げています。 本記事では、GoogleのCloud Text-to-SpeechとAmazonのAmazon Pollyの比較を行い、それぞれの特徴や利点を […]

近年、テキスト音声変換サービスは、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-SpeechAmazon 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 米ドル)
Text-to-Speech の料金から引用

「Amazon Polly」の料金表

テキストの長さ音声の長さ標準 TTS コストニューラル TTS コストロングフォーム TTS コスト
リクエスト 1,000 件、リクエスト 1 件あたり 1,000 文字100 万文字~ 23 時間 8 分4.00 USD16.00 USD100.00 USD
リクエスト 1 万件、リクエスト 1 件あたり 100 文字100 万文字~ 23 時間 8 分4.00 USD16.00 USD100.00 USD
2016 年度 Amazon 株主様宛ての手紙1,300 文字、1 ページ~ 1 分 40 秒0.005 USD0.021 USD0.13 USD
平均的な E メールメッセージ~ 3,100 文字~ 4 分0.01 USD0.05 USD0.31 USD
典型的なニュース記事~ 6,500 文字、3 ページ~ 9 分0.03 USD0.10 USD0.65 USD
『クリスマスキャロル』、チャールズ・ディケンズ著~ 16 万 5,000 文字、64 ページ~ 3 時間 50 分0.66 USD2.64 USD16.50 USD
『ハックルベリー・フィンの冒険』、マーク・トゥエイン著~ 60 万文字、224 ページ~ 13 時間 50 分2.40 USD9.60 USD60.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 USD0.48 USD3.00 USD
アニメーションアバター:
–    アバターのフレーズ 1 つの平均の長さ: 100 文字
–    アバターで使用するフレーズ数: 25
–    口の動きを同期させるために必要とする Speech Marks
同期させる音声 2,500 文字Speech Marks データ 2,500 文字~ 3 分 30 秒0.02 USD0.08 USD0.50 USD
ハイライトテキストによる子供向けのストーリーテリング
–    物語のテキストの長さ: 10,000 文字
–    ハイライトテキストを同期させるために必要とする Speech Marks
同期させる音声 10,000 文字Speech Marks データ 10,000 文字~ 13 分0.08 USD0.32 USD2.00 USD
Amazon Polly 料金「料金の例」から引用

ウェブサービスやスマホアプリに利用

また、弊社では、どちらのサービスもウェブサービスやスマートフォンアプリから利用する環境を構築できます。
自社のウェブサイトやアプリに追加して、さらに便利に使ってみませんか?

お問い合わせ

テキスト音声変換を使ったサービスに関するご相談、お問合せ、お待ちいたしております!

無料相談はこちら

関連記事

関連する情報

担当者

開発者

LET's GET SOCIAL