営業向けのボイスメモアプリです。話者分離と文字起こし機能を備え、オフラインでの音声認識に対応しています。
SalesVoiceNotesは、営業活動中の会話を録音し、話者を自動的に識別しながら文字起こしを行うiOSアプリです。オンデバイスの音声認識エンジンを使用しているため、インターネット接続がなくても動作します。
- リアルタイム録音と音声レベルの可視化
- 話者分離による複数人の会話の識別
- 日本語音声認識による文字起こし
- オフライン対応のオンデバイス音声認識
- バックグラウンド録音対応
- 画面ロック中も録音を継続
- カスタム語彙による認識精度の向上
- iOS 16.0以上
- iPhone または iPad
| ファイル名 | 役割 |
|---|---|
| SalesVoiceNotesApp.swift | アプリのエントリーポイントとAppDelegate |
| ContentView.swift | メイン画面のUI |
| Recorder.swift | 録音機能を管理するクラス |
| AudioProcessingService.swift | 音声処理サービス(話者分離、文字起こし) |
| TranscriptSegment.swift | 文字起こし結果を表すモデル |
| VocabularyLoader.swift | カスタム語彙の読み込み |
| vocabulary.json | カスタム語彙データ |
- SwiftUI: UIフレームワーク
- AVFoundation: 音声録音
- Speech Framework: 音声認識(SFSpeechRecognizer)
- SwiftData: データ永続化
このアプリでは、以下の手法を組み合わせて話者分離を実現しています。
-
音声特徴量の抽出
- RMSエネルギー
- ゼロ交差率
-
発話区間の検出(VAD: Voice Activity Detection)
- 適応的閾値を使用したエネルギーベースの検出
- ヒステリシスによる安定した検出
-
話者クラスタリング
- 音声特徴量に基づくK-means風クラスタリング
- 発話間の無音区間と特徴量変化による話者変更点の検出
vocabulary.json ファイルにカスタム語彙を追加することで、音声認識の精度を向上させることができます。語彙は以下のカテゴリに分類されています。
- sales: 営業関連の用語
- technology: 技術関連の用語
- business: ビジネス一般の用語
- products: 製品・サービス関連の用語
- Xcode 15.0以上をインストールしてください
- プロジェクトをクローンします
SalesVoiceNotes.xcodeprojを開きます- ターゲットデバイスを選択してビルドします
このアプリでは以下の権限が必要です。Info.plistに設定済みです。
- マイク使用権限(NSMicrophoneUsageDescription)
- 音声認識権限(NSSpeechRecognitionUsageDescription)
- バックグラウンドオーディオ(UIBackgroundModes)
- アプリを起動します
- 「録音開始」ボタンをタップして録音を開始します
- 録音中は音声レベルメーターと波形アニメーションが表示されます
- 「録音停止」ボタンをタップして録音を停止します
- 「話者分離 + 文字起こし」ボタンをタップして解析を開始します
- 解析結果が話者ごとに色分けされて表示されます
xcodebuild test -project SalesVoiceNotes.xcodeproj -scheme SalesVoiceNotes -destination 'platform=iOS Simulator,name=iPhone 16'xcodebuild test -project SalesVoiceNotes.xcodeproj -scheme SalesVoiceNotes -destination 'platform=iOS Simulator,name=iPhone 16' -only-testing:SalesVoiceNotesUITestsMIT