Following are several recommendations to consider as you structure your VIA code to make it easier to test.
Architect the code base into independent units
Primary units include:
- Triggering. Hotwording, Push-to-Talk (PTT) and Tap-to-Talk (TTT).
- Voice recognition. Focused on converting audio streams into structured data.
- Command fulfillment. Focused into processing a query and translate it into an action.
Each of these layers should be testable on its own and independent from each other. Include and document:
- Intent extras that can be used to pass user queries directly to the command fulfillment layer. This would allow OEMs and integrators to skip the voice recognition and test command fulfillment (car integrations) directly.
- A process to pass prerecorded audio files into the Voice Interaction service, allowing to test voice recognition on its own, skipping the vehicle microphone.
Emulator for testing
Android Emulator is an excellent platform for development and testing as it provides bridging between the host microphone and the guest AAOS instance.
Figure 1. Emulator testing