2
0

Tips: AWS SDK for JavaScriptを使ってAmazon Pollyで生成した音声データをローカルにファイルとして保存する

Posted at

この記事は何

AWSにはAmazon Pollyという、テキストから読み上げデータを生成する(いわゆるText to Speech)ためのサービスが存在します。

Amazon PollyにもJavaScript SDKは存在するのですが、ExampleにはS3に生成したデータをアップロードする方法しかなく、ローカルにファイルとして保存する方法がわかりづらかったので、記事としてまとめました。

前準備

まずは@aws-sdk/client-pollyをインストールします。

$ npm i @aws-sdk/client-polly

認証についても以下の記事などを参考にセットアップを行なってください。

今回の例はTypeScriptで実装するので、実行環境として今回はts-nodeを利用しようと思います。

$ npm i ts-node

コード

以下のようなコードでローカルにファイルとして保存することが可能です。

script.ts
import fs from "fs";
import path from "path";

import {
  PollyClient,
  SynthesizeSpeechCommand,
  SynthesizeSpeechInput,
} from "@aws-sdk/client-polly";

const main = async () => {
  const client = new PollyClient({ region: "ap-northeast-1" });
  const speechFile = path.resolve(`path/to/file/output.mp3`,);
  const params: SynthesizeSpeechInput = {
    OutputFormat: "mp3",
    Text: 'こんにちは、私の名前はともこです。',
    VoiceId: "Tomoko",
    SampleRate: "22050",
    TextType: "text",
    LanguageCode: "ja-JP",
    Engine: "neural",
  };
  const command = new SynthesizeSpeechCommand(params);

  const response = await client.send(command);

  if (response.AudioStream) {
    const buffer = Buffer.from(
      await response.AudioStream.transformToByteArray(),
    );
    fs.writeFileSync(speechFile, buffer);
  }

  console.log(speechFile);
};

main();

以下のように実行することで音声データをローカルに保存することができます。

$ npx ts-node --compiler-options '{"module":"CommonJS"}' script.ts
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0