SDK Introduction*
SDK related links, please contact the sales manager to obtain access if you lack permissions
Currently, ovp_aiot supports two application solutions, which we refer to as:
- Configurable ASR Solution: By working with
viva, you can easily define and configure voice command words, serial port protocols, TTS playback, and dialect self-learning, achieving true "zero-code" development. - Online/Offline Large Model Solution: By referring to the relevant documentation in Large Model Solution Overview, you can implement a complete voice interaction solution.
lightningserves as the reference implementation for the LN882H chip.
1. ovp_aiot Introduction*
1.1. Software Framework*

Application (APP)
- Implements specific business logic and user interaction
- Processes voice recognition results and executes corresponding actions
- Manages peripheral interactions such as LED, buttons, and serial port communication
- Typical applications: offline_asr_app (Configurable ASR Solution APP), smartbot_app (Online/Offline Large Model Solution APP)
Framework
- Initializes corresponding VPA functions based on different requirements and pushes VPA return data to the APP
- Typical modes: ovp_mode_offline_asr (KWS wake-up mode used by both Configurable ASR and Online/Offline Large Model), bypass (mode that passes through without VPA processing)
OVP Common Modules
- Application core: Provides an event-driven mechanism and handles the application event loop
- Common modules: Provide general functions such as system initialization, memory management, audio input/output, and TTS playback
VPA Voice Processing (VPA)
- Mode manager: Manages system working mode switching (offline ASR, noise reduction, recording, etc.)
- VPA Process: Top-level interface of the voice processing engine, managing the processing flow
- VMA Modules: Voice algorithm modules (AEC echo cancellation, noise reduction, feature extraction, etc.)
- VUI Engines: Voice interaction engines (KWS keyword spotting, VAD voice activity detection, SED sound event detection, etc.)
Driver Layer
- HAL: Hardware abstraction layer, providing unified hardware access interfaces
- Fornax Drivers: Low-level driver implementations for GX8005/GX8006 chips
Hardware Layer
- GX8005/GX8006 chip hardware resources
1.2. Directory Structure*
1.2.1. Top-Level Directory Structure*
ovp_aiot$ tree -L 1
.
├── 3rdparty # Third-party code
├── app # Application code
├── arch # Startup code, application development does not need to concern itself with this directory
├── boards # Board-level configuration code, configured according to hardware, generally no modification required
├── configs # Default configurations
├── drivers # Driver code
├── include # Common header files
├── lib # Library files
├── ovp # Offline voice processing and framework calls *
├── scripts # Common scripts
├── tools # Auxiliary tools
├── utility # Common utility code
├── Kconfig # Build configuration source
├── Makefile
└── README.md
1.2.2. Core Directory Structure*
ovp$ tree -L 2
.
├── app_core
│ ├── app_core.mk
│ ├── ovp_app_core.c # app core, core code of the app framework
│ ├── ovp_app_core.h
│ └── ovp_app.h
├── common
│ ├── audio_in # audio in module
│ ├── countdown # Provides a simple countdown interface, usable for timeout determination
│ ├── custom_space # Flash read/write encapsulation
│ ├── Kconfig
│ ├── kws_uart_report # Works with viva to implement serial port command reporting
│ ├── log.h # Log header file
│ ├── Makefile
│ ├── ota # Dual-backup OTA
│ ├── ovp_buffer.c # Pipeline buffer management interface
│ ├── ovp_buffer.h
│ ├── queue.c # Queue
│ ├── queue.h
│ ├── ringbuf.c # Ring buffer
│ ├── ringbuf.h
│ ├── self_learning # Works with viva to implement self-learning
│ ├── system_init.c # System initialization
│ ├── system_init.h
│ ├── tts_play # Works with viva to implement opus TTS playback, calls voice_player for implementation (use the upper-layer tts_play module interface when controlling volume)
│ ├── uart_message # An older serial port protocol
│ ├── uart_record # Serial port recording implemented using uart_message
│ ├── uart_smartbot # WiFi large model serial port protocol
│ ├── uart_tts_reply # Works with viva to implement serial port command responses
│ ├── viva_resource # Works with viva to parse the resource.bin file generated by viva
│ ├── voice_player # opus/pcm player
│ └── vpa_helper.c
├── Kconfig
├── main.c # System initialization and main loop
├── Makefile
├── ovp_mode_bypass.c
├── ovp_mode.c
├── ovp_mode.h
├── ovp_mode_idle.c
├── ovp_mode_nn_denoise.c
├── ovp_mode_offline_asr.c # Offline ASR mode; this mode calls the app core interface to drive the app framework and calls VPA to handle voice noise reduction, wake-up, and recognition
└── vpa # Handles voice noise reduction, wake-up, and recognition
├── example # Example algorithm package
├── Kconfig
├── olab_panda # Default algorithm package
└── vpa.mk
1.3. Data Flow Introduction*

2. viva Introduction*
viva is a powerful configuration tool designed specifically to simplify the development of the ovp_aiot low-power offline voice recognition SDK.
With viva, users can easily define and configure voice command words, serial port protocols, TTS playback, and dialect self-learning, achieving true "zero-code" development.
For usage instructions, refer to the Documentation directory in the SDK.
3. lightning Introduction*
lightning is an SDK developed for the LN882H chip, applied to the GX8006 + LN882H large model solution. The development solution is located in the SDK project/ln_model_public directory.
The solution mainly consists of three major parts:
First, cloud connectivity, which involves bidirectional audio interaction with the cloud and the transmission of control messages.
Second, interaction with the GX8006 voice chip, which involves bidirectional audio transmission and flow control based on serial port, as well as sending related control commands such as configuring playback parameters and setting volume.
Third, it provides an example of authorization and OTA, as well as control implementation based on MCP.