DaVoice Integration Guides

Step-by-step guides to integrate wake word detection into your applications across all major platforms

New to voice activation? Read what a wake word is and how wake word detection works before choosing an integration path.

Flutter Integration Guide

📦 Repository

GitHub: https://github.com/frymanofer/Flutter_WakeWordDetection

Flutter plugin for wake word detection on iOS and Android.

Step 1: Add Dependency

Add to pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  davoice_wake_word: ^1.0.0
  permission_handler: ^10.0.0

Step 2: Platform Configuration

iOS Configuration

Add to ios/Runner/Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>This app needs microphone access for voice commands</string>

Android Configuration

Add to android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Step 3: Implementation Example

import 'package:flutter/material.dart';
import 'package:davoice_wake_word/davoice_wake_word.dart';
import 'package:permission_handler/permission_handler.dart';

class WakeWordScreen extends StatefulWidget {
  @override
  _WakeWordScreenState createState() => _WakeWordScreenState();
}

class _WakeWordScreenState extends State<WakeWordScreen> {
  final DaVoiceWakeWord _wakeWord = DaVoiceWakeWord();
  bool _isListening = false;
  String _lastDetection = 'No detections yet';

  @override
  void initState() {
    super.initState();
    _requestPermissions();
    _initializeWakeWord();
  }

  Future<void> _requestPermissions() async {
    await Permission.microphone.request();
  }

  Future<void> _initializeWakeWord() async {
    try {
      await _wakeWord.initialize(
        modelPath: 'assets/hey_jarvis.onnx',
        threshold: 0.97,
        onDetection: (result) {
          setState(() {
            _lastDetection = 'Detected at ${DateTime.now()}';
          });
          print('Wake word detected! Confidence: ${result.confidence}');
        },
      );
    } catch (e) {
      print('Error initializing wake word: $e');
    }
  }

  void _toggleListening() async {
    if (_isListening) {
      await _wakeWord.stop();
    } else {
      await _wakeWord.start();
    }
    setState(() {
      _isListening = !_isListening;
    });
  }

  @override
  void dispose() {
    _wakeWord.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DaVoice Wake Word'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Icon(
              _isListening ? Icons.mic : Icons.mic_off,
              size: 100,
              color: _isListening ? Colors.blue : Colors.grey,
            ),
            SizedBox(height: 20),
            Text(
              _lastDetection,
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 40),
            ElevatedButton(
              onPressed: _toggleListening,
              child: Text(_isListening ? 'Stop Listening' : 'Start Listening'),
            ),
          ],
        ),
      ),
    );
  }
}

Step 4: Add Model Assets

Create assets/ folder and update pubspec.yaml:

flutter:
  assets:
    - assets/hey_jarvis.onnx
    - assets/ok_assistant.onnx

✅ Advanced Features

  • • Configure sensitivity with threshold parameter
  • • Implement background service for always-on detection
  • • Add multiple wake word models
  • • Handle errors and edge cases gracefully

Need Help Getting Started?

Our team provides free integration support and custom wake word training for all platforms.

Free Development Support • Code Examples • Community Discord • 1-2 Week Custom Model Turnaround