Voice Control for IoT Devices via Mobile App

When developing voice control for IoT devices in a mobile app, we often see clients limiting themselves to built-in assistants. But that's just the tip of the iceberg. A full solution includes speech recognition, intent extraction (NLU), mapping to device commands, and feedback—each stage can break

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Voice Control for IoT Devices via Mobile App
Complex
~3-5 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    600

When developing voice control for IoT devices in a mobile app, we often see clients limiting themselves to built-in assistants. But that's just the tip of the iceberg. A full solution includes speech recognition, intent extraction (NLU), mapping to device commands, and feedback—each stage can break without proper architecture. Order voice control development for your IoT project—we will audit and propose an architecture within 1 day.

How voice control for IoT works on mobile devices

Typical solution architecture: user speaks a command → microphone → speech recognition engine (local or cloud) → NLU (intent and entity extraction) → mapping to device commands → send via MQTT/HTTP/BLE to device → feedback via TTS. Each stage can be implemented differently, and the choice determines latency, autonomy, and accuracy.

Two fundamentally different approaches

Built-in voice assistants (Siri Shortcuts, Google Assistant Actions) work via the cloud and require explicit user permission. Siri Shortcuts on iOS are available via INPlayMediaIntent and INSendMessageIntent, but for arbitrary IoT commands you need AppIntent (iOS 16+)—a Swift framework for describing intents. Example: "Hey Siri, turn off the kitchen light" → Siri calls TurnOffLightIntent in your app, which sends an MQTT command. Latency is 2–4 seconds via Apple's cloud, no guarantees when offline.

Local recognition is another level. On iOS it's SFSpeechRecognizer with SFSpeechAudioBufferRecognitionRequest. Since iOS 13 it supports on-device mode (requiresOnDeviceRecognition = true) without sending audio to the cloud. On Android—SpeechRecognizer API (via Google cloud) or Vosk / Whisper.cpp for fully offline recognition.

For IoT apps where local network operation without internet is important, the choice is clear—local recognition plus offline NLU.

Why local recognition is more effective than cloud

Local processing offers three key advantages:

  • Latency: 300–800 ms vs 1.5–3 seconds for cloud solutions.
  • Offline operation: full autonomy when internet is disconnected.
  • Privacy: audio data never leaves the device.

Compare both approaches:

Parameter Built-in assistants (cloud) Local on-device recognition
Latency from tap to response 2–4 s 0.3–0.8 s
Works without internet No Yes
Accuracy on Russian Good (Google) / medium (Apple) 94% after training (fastText)
Integration complexity Low (via SDK) Medium (models, training)
Ownership cost Pay per request One-time development cost

As can be seen, local recognition is 3–5 times faster and saves up to 30% on cloud services for large command volumes. Get a consultation for your project—we will assess possibilities and timelines in 1 day.

NLU: from text to device command

Recognized "turn on the kitchen light and raise the temperature to twenty-two"—now we need to extract:

  • intent: turn_on, set_temperature
  • entities: device_type=light, location=kitchen, device_type=thermostat, value=22

For simple cases, a rule-based approach suffices: a dictionary of verb-intents + a dictionary of devices and rooms from the user's database. We build regexes or a simple intent matcher on the same device list already in the system.

For complex scenarios—Rasa NLU (self-hosted) or Duckling for numeric values. On Flutter we integrate via HTTP requests to a local server on the home network or via dart:ffi for an embedded model.

Real example: a smart apartment project with 35 devices, Russian language. We trained a simple model on fastText with ~500 command examples, converted to .tflite, ran via tflite_flutter. Accuracy on household commands—94% (from internal testing). Misses were on compound commands (two actions in one phrase)—solved via preprocessing by splitting on conjunctions "and", "then", "after that".

What stages does voice interface development include?

The process consists of six steps:

  1. Analysis—determine the list of devices, commands, languages, offline requirements.
  2. Architecture selection—cloud vs local, NLU engine choice.
  3. Design—command mapping, error handling, dialog scenario.
  4. Implementation—code, MQTT integration, model training (if needed).
  5. Testing—verify on real devices, stress-test for noise and accents.
  6. Deployment—publish to App Store / Google Play, set up CI/CD.

For comparison, here are NLU engines:

NLU Engine Type Offline Accuracy (Russian) Complexity
Rule-based Custom code Yes 70–80% Low
Rasa NLU Self-hosted Yes 85–90% Medium
fastText + tflite In-app model Yes 90–95% High
Duckling Numeric entities Yes >95% Low
Detailed description of testing stagesTesting includes verification on real devices, stress tests for noise and accents, and evaluation of wake word performance at 60 dB noise level.

Feedback and edge cases

Push to talk vs always-on. Always-on on mobile is a battery killer. We recommend a push-to-talk button in the app plus optional wake word via Porcupine SDK (PicoVoice). Porcupine runs locally, consumes <5% CPU on idle.

What if the device is not recognized?

Don't stay silent. Return a voice response via AVSpeechSynthesizer (iOS) / TextToSpeech (Android), list what was understood, ask for clarification. The user doesn't see the screen—they need audio feedback.

On Flutter we use flutter_tts for synthesis and speech_to_text as a unified API over platform engines. Important: on Android 11+ SpeechRecognizer requires RECORD_AUDIO permission with explicit explanation in onRequestPermissionsResult. Without a clear rationale, Google Play Console flags it as a policy violation.

MQTT integration

Voice command → NLU → device command → publish to MQTT topic. Latency from button press to device response: recognition on device ~300–800ms, NLU ~50ms, MQTT publish <50ms with local broker. Total—feels instant.

With cloud recognition add 1.5–3 seconds. On Russian, cloud Google Speech-to-Text works well; Apple Speech is worse on specific IoT terms like "dimmer", "receiver", "relay".

Example MQTT publish in Swift:

let client = CocoaMQTT(clientID: "iPhone", host: "192.168.1.100", port: 1883) client.connect() client.publish("home/kitchen/light", withString: "on", qos: .qos1) 

What's included

  • Development of recognition module (iOS/Android/Flutter) with chosen approach.
  • NLU model training for your commands and devices (up to 500+ examples).
  • Integration with MQTT broker and existing IoT infrastructure.
  • Wake word setup (optional) and TTS feedback.
  • Architecture documentation and instructions for adding new commands.
  • Support for 30 days after deployment.

Get a consultation for your project—we will assess possibilities and timelines in 1 day.

Timelines

Push-to-talk with cloud recognition and simple command mapping—2–3 weeks. Offline recognition + NLU + wake word + TTS feedback—6–10 weeks. Cost depends on number of languages, platforms, and offline requirements. Contact us to evaluate your project—we will prepare a proposal in 1 day. Our team has 5+ years of experience in mobile IoT app development and has completed over 30 projects with voice control.

Apple Developer Documentation, Google Speech API