Amazon Web Services ブログ

Using Amazon Polly to Provide Real-Time Home Monitoring Alerts

このブログは、Y-cam Solutions のシニア開発者である Siva K. Syamala によるゲストブログポストです。Syamala 女史の言葉によると、「Y-cam は高性能なセキュリティビデオソリューションのプロバイダとして、すべての人々に簡単で扱いやすいスマートホームセキュリティを提供してくことをビジョンに掲げています」。

ホームセキュリティは、ホームオートメーションと IoT の活用においてとても重要な要素です。Y-cam Solutions Limited は Amazon をその基盤援助として、世界各地からスマートフォンによるモニタリングと制御ができるスマートセキュリティシステムを提供してきました。アラート、通知、そしてシステムをコントロールする方法を改善するために、Y-cam は Amazon Polly を使用して、ユーザーが会話によってセキュリティシステムと交信できる最新型の AI サービスを提供します。

当社サービスの作動方法

アラームが発生すると、Twilio を通じて音声によるカスタマーへの通知が行われます。呼び出しが確立されたら、Twilio は TwiML の指示に従って手順を実行し、Amazon Polly から取得する音声構成を使用してカスタマーにストリーミングを開始します。呼び出しの受信者は、携帯電話のキーパッド (DTMF コード) のボタンを押して回答します。DTMF コードによって、当社のサービスは指定されたアクションを実行し、Amazon Polly から取得する音声合成への TwiML 指示を返します。実際により近い会話を実現するには、Amazon Polly が素早く返答することがとても重要となります。遅延と待機時間は不満を引き起こし、受信者が電話を終了してしまう可能性を増大させます。

以下は、アラームが発生した場合のカスタマーへの通話を示すオーディオクリップのサンプルです。

アーキテクチャ

 

Amazon Polly の呼び出し

次の Java コードは、Amazon Polly から音声合成がリクエストされ、S3 バケットに保存されることを示しています。

public String convertTextToSpeech(final String text, final String polyVoiceId) {
	log.info("Converting " + text + " to speech");
	// Create speech synthesis request.
	SynthesizeSpeechRequest synthesizeSpeechRequest = new SynthesizeSpeechRequest()
	.withText(text)
	.withVoiceId(polyVoiceId)
	.withOutputFormat(OutputFormat.Mp3);

	// Get the synthesized speech audio stream.
	SynthesizeSpeechResult synthesizeSpeechResult = awsPollyClient.synthesizeSpeech(synthesizeSpeechRequest);
		
	// store audio stream of Polly to S3 as an MP3 file
	byte[] bytes = null;
	try {
		bytes = IOUtils.toByteArray(synthesizeSpeechResult.getAudioStream());
	} catch (IOException e) {
		log.error("Could not get bytes from the audio stream " + e.getMessage());
	}
		
	ObjectMetadata omd = new ObjectMetadata();
	omd.setContentType(synthesizeSpeechResult.getContentType());
	omd.setContentLength(bytes.length);
	ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
	String fileName = getRandomString();
	final PutObjectRequest s3Put = new PutObjectRequest(pollySpeechBucket, fileName, byteArrayInputStream, omd).withCannedAcl(CannedAccessControlList.PublicRead);

	amazonS3Client.putObject(s3Put);

	return S3URL;
}

Amazon Polly とは?

Amazon Polly を使用する前は、非現実的な音声とスケーラビリティ問題があった、さまざまな TTS プロバイダを使用していました。当然ながら、ロボット音声はカスタマーエクスぺリンスの向上につながりません。私たちは、より自然で人間性のある声を求めています。Amazon Polly は、とても簡単で柔軟性のある自然でスケーラブルなテキスト読み上げ機能ソリューションを低価格で私たちに提供します。また、Amazon Polly は多種の音声と言語もサポートしています。Amazon Polly はミリ秒単位でデータ処理ができるため、カスタマーは回答を長時間待つ必要がありません。

これからの開発

私たちは近い将来に Amazon Lex の使用を計画しています。これによって、DTML コードを押す代わりに、ホームセキュリティシステムに制御されたコマンドを発信できます。Amazon Lex では、自動音声認識 (ASR) という音声をテキストに変換するためのディープラーニング機能と、テキストの意図を理解するための自然言語理解 (NLU) を活用しています。私たちの目的は、ユーザーに完全な音声によるユーザーインターフェースを提供することです。