🤖

Flutter で Text to Speech を使う

2021/04/17に公開

TTSを使いたいなと思い、メモ的な感じで残しておく。

flutter_tts

https://pub.dev/packages/flutter_tts

Flutterで何か実装しようと思った時に大抵のものは既にパッケージ化されているのが良い。TTSも既にパッケージがあるのでこれを使ってみる。

使い方は簡単でインスタンスを作成して再生用のメソッドを呼ぶだけでOK。

import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  final FlutterTts tts = FlutterTts();
  runApp(MaterialApp(
    home: Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          // await tts.setVoice({'name': 'ja-jp-x-jab-local', 'locale': 'ja-JP'});
          // await tts.setVoice({'name': 'ja-jp-x-jad-local', 'locale': 'ja-JP'});
          // await tts.setVoice({'name': 'ja-jp-x-jac-local', 'locale': 'ja-JP'});
          // await tts.setVoice({'name': 'ja-jp-x-htm-local', 'locale': 'ja-JP'});
          await tts.speak(
            '新型コロナウイルス対策の接触確認アプリ「COCOA(ココア)」の不具合に関し、'
            '厚生労働省から保守運用を受託していた業者のパーソルプロセス&テクノロジー社は16日、'
            '昨年8月以降の業務対価1200万円を自主返納すると発表した。',
          );
        },
        child: Icon(Icons.play_arrow),
      ),
    ),
  ));
}

また、手持ちのAndroidでは日本語音声として4種類使える状態だった。

ただし、Android・iOSで提供されているTTSの機能を呼び出す仕組みなので、GCPのTTSで使えるWaveNetよりも不自然な音声ではある。

Android上にWaveNetが標準搭載されたりしないのだろうか🤔

https://cloud.google.com/text-to-speech?hl=ja#section-2

最後に

文章でニュースとか技術的な記事とか読むのが面倒くさいなと思い、1.5倍速の音声を再生して垂れ流しておきたい。
そして、パッケージをインストールして数行追加するだけでTTSが使えてしまう感じはすごいなと思いつつ、Android・iOSのネイティブコードが書けると色々とFlutterで出来ることが増えそうだなと思う。(Androidは書けるけどiOSまで手を出すのは若干めんどくさい)

作って学ぶ、FlutterとFirebaseを使ったアプリ開発

FlutterとFirebaseを使ったアプリ開発に関して書籍にまとめました。

Flutterで始めるアプリ開発

https://www.flutter-study.dev/

Discussion