この記事は株式会社ドットログによる
コンストラク体操日記 Advent Calendar 2025の 20日目 の記事です。
はじめに
こんにちは、ドットログのRsmです。先日、プログラミング/アプリ開発超初心者ながら、Flutterを用いて音声入力による家計簿アプリを自作しました。その際に、「音声認識ってどうやって搭載すんの?」→「なんかspeech_to_textっていう便利そうなのあるやん!」という安直な考えで、初めてspeech_to_textを使用しました。その中で、言語側から指定する音声入力の方法や音声入力AIとの違いなど、自分として非常に勉強になった内容を以下にまとめます↓
忙しい人向けに最初にまとめ
- Flutterの
speech_to_textは実装が速く、端末の音声入力をそのまま使える機能。 - 一方で、精度と安定性はiOSの標準音声認識(Apple Speechなど)に依存。
- 短文入力なら十分使えるが、長文ディクテーションや高精度な議事録は、WhisperやクラウドASR、Aqua Voiceのような専用ASRを使用するべき。
この記事の対象読者
-
Flutterでアプリに音声認識機能を搭載したい
-
speech_to_textの書き起こし精度を知りたい -
アプリ開発における音声認識方法の最適解を知りたい
1. speech_to_text って何?
speech_to_textは 端末(OS)に備わっている音声認識機能をFlutterから呼ぶ ためのパッケージです。
公式ページでも、用途は 「commands and short phrases(短いコマンドや短文)」 が主眼で、連続変換や常時待受は想定外 と明記されています。
- pub.dev: speech_to_text
https://pub.dev/packages/speech_to_text
2. iOS側の制約:導入の際に注意すべきこと
ここ重要。AppleはSpeech Recognitionについて、開発者向け資料で次のように注意しています。
- 音声長は「約1分」前提で計画する(one-minute limit)
- Speech Recognitionは 無料だが無制限ではない(端末/アプリ単位の制限に備える)
ソース:
-
Apple Developer Documentation(SFSpeechRecognizer)
“Plan for a one-minute limit on audio duration.”
https://developer.apple.com/documentation/speech/sfspeechrecognizer -
WWDC16 “Speech Recognition API” スライド(PDF)
“Maximum utterance duration—about one minute” / “Speech Recognition is free, but not unlimited”
https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/509_speech_recognition_api.pdf?dl=1 -
WWDC16 動画(「strict audio duration limit of about one minute」に言及)
https://developer.apple.com/videos/play/wwdc2016/509/
つまり:
-
speech_to_textを使って 会議30分を連続で書き起こす みたいな設計は、
分割・再接続・失敗時リトライ・UX設計 が必要になり、難易度上昇 - 「短文入力(フォーム補助 / 検索 / コマンドetc...)」に限定すると安定
3. 精度のベンチマーク
音声認識の精度は一般に WER(Word Error Rate:単語誤り率) で比較されます(低いほど良い)。
Voice Writerが公開している Real-World Speech-to-text API Leaderboard(2025年10月現在) は、ノイズ・訛り・専門語を含む条件で複数ASRを比較しています。
- Real-World Speech-to-text API Leaderboard
https://voicewriter.io/speech-recognition-leaderboard
このページの Mean WER(全体平均)を抜粋すると、概ね次の位置づけです(※英語評価):
| 系統 | 例 | Mean WER(低いほど良い) | 価格(目安) |
|---|---|---|---|
| 端末(OS) | Apple Dictation | 16.5% | Local |
| クラウド大手 | Google Speech | 13.1% | $0.96/hr |
| クラウド大手 | Microsoft | 10.3% | $0.18/hr |
| OSS(ローカル) | Whisper Large | 7.2% | Local |
| API | GPT-4o Transcribe | 5.4% | $0.36/hr |
※注意:
- これは 英語中心 のベンチです。日本語は評価方法が変わり得ます。
- ただし「端末内蔵ASR(Apple Dictation相当)」より「Whisper/最新APIが低WERになりやすい」傾向は掴めます。
4. AI音声入力アプリ(Aqua Voice)と何が違うの?
Aqua Voiceは “アプリ横断の高精度ディクテーション体験” を提供するプロダクトで、Flutterプラグインではなく 外部ASR(API/アプリ) のカテゴリです。
- Aqua Voice公式
https://aquavoice.com/ - Avalon API(OpenAI互換のエンドポイント、AISpeakで97.3% accuracy等の記載)
https://aquavoice.com/avalon-api
Aqua Voice(Avalon)に関しては、評価情報が2系統あります。
(1)公式の主張
- Avalon APIページでは AISpeakで97.3% accuracy を掲げています(開発者用語に特化したベンチ)
https://aquavoice.com/avalon-api - 価格についてもページ内に記載があります(Free期間と、その後の$0.39/hr表記など)。
(2) ベンチマーク(Open ASR Leaderboard論文)
Open ASR Leaderboardの論文(arXiv)では、
「最上位のクローズド(商用)モデルとしてAqua Voice Avalonが6位に位置する」 と言及があります。
- arXiv: Open ASR Leaderboard(本文)
https://arxiv.org/abs/2510.06961
加えてAqua Voice公式ブログでは、OpenASR上での WER平均6.24% に言及しています。
- “Avalon lands at #6 on OpenASR Leaderboard”
https://aquavoice.com/blog/avalon-openasr-leaderboard
つまり:
Aqua Voice(Avalon)などの外部APIは高精度なものも多いが、アプリに組み込む場合は API連携(録音→送信→受信) の設計が前提になり、 オフライン要件・レイテンシ・個人情報取り扱い・コストを考慮する必要があります。
5. 他言語のプラグインと比べてどう?
ここは自分も初心者としてよくわかっていなかった部分ですが、iOSでApple Speechにを使用する限り、FlutterだろうがSwiftだろうがReact Nativeだろうが精度は大きく変わりません。
差が出るのは主に次の要因です。
- どのASRエンジンを使うか(Apple / Whisper / Google / Azure / Avalon など)
- 音声入力の設計(短文前提か、長文分割か、確定タイミング)
- 音声の条件(マイク、距離、雑音、話速、固有名詞)
つまり「Flutterだから精度が悪い」というより、
OS内蔵Speechを使う設計だから、その範囲の精度になるわけですね。
6. じゃあ結局、iOS×Flutterで何を選ぶべき?
A. 短文入力を最速で載せたい(検索/フォーム補助/コマンド)
speech_to_text- 実装が超簡単、端末内蔵で手軽
- iOSの「1分前提」を越える用途は設計コストが跳ね上がる
B. 書き起こし精度が最重要(議事録/長文/固有名詞)
- Whisper / クラウドASR(Google/Azure等)
- 外部ベンチでは端末系より低WERになりやすい傾向
- 実装が増える(録音管理、非同期、課金、同意/プライバシー)
C. 入力体験まで最適化したい(AI用語/開発者用語/UX)
- Aqua Voice(Avalon)等の専用ASR
- 基本は外部連携が必要になる
最後に
いかがでしたでしょうか?Flutterのみならず、アプリやサービスに音声認識を搭載したい際にはぜひ参考にしてください!