mobile-audio-video

Implements audio playback, recording, and text-to-speech in Expo React Native apps.

3|1|Updated Jan 12, 2026
One-click install
npx skills add https://github.com/nghyane/VSTEP --skill mobile-audio-video-nghyane
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: mobile-audio-video
Source: https://github.com/nghyane/VSTEP/tree/main/apps/mobile-v2/.agents/skills/mobile-audio-video
Command: npx skills add https://github.com/nghyane/VSTEP --skill mobile-audio-video-nghyane

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires expo-av, expo-speech.

What problem does it solve? Building audio and video features for a VSTEP exam mobile app requires handling playback restrictions, recording permissions, and TTS correctly with expo-av and expo-speech, which is error-prone without established patterns. ## Core Features & Use Cases - Exam Audio Playback: Play listening exam audio once with no seek or replay, custom progress UI, and automatic cleanup on unmount. - Speaking Recording: Record speaking exam answers with permission handling, countdown timers, review playback, and typed FormData upload. - Text-to-Speech Shadowing: Provide pronunciation practice with adjustable speech rate and speaking-state tracking, restricted to practice mode. - Use Case: When building the listening section of the VSTEP mobile app, apply these patterns to enforce play-once rules, show a 3-second countdown, and render a custom progress bar without native controls. ## Quick Start Implement the listening exam audio player for the mobile app following the expo-av play-once pattern with a custom progress bar.

Frequently Asked Questions about mobile-audio-video

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I play audio in React Native with expo-av?▼

Use Audio.Sound.createAsync with the audio URI and options like shouldPlay and isLooping. Track progress via setOnPlaybackStatusUpdate and call sound.unloadAsync() on unmount to release resources.

How to record audio in Expo React Native apps?▼

Request microphone permission with Audio.requestPermissionsAsync, then call Audio.Recording.createAsync with a quality preset. Stop with stopAndUnloadAsync and retrieve the file URI via recording.getURI().

Does expo-speech support adjustable speech rate?▼

Yes, Speech.speak accepts a rate option, and this pattern uses values 0.7 through 1.0 for shadowing practice. It is intended for practice mode only, not during exams.

Why does audio recording fail on mobile devices?▼

Recording fails when microphone permission is not granted. Always call Audio.requestPermissionsAsync first and show a settings prompt if the status is not granted before starting any recording.

Can users seek or replay audio during a VSTEP listening exam?▼

No, exam rules require play-once behavior with no seek or replay. Use a hidden audio element with a custom progress bar, disable the slider during exams, and only allow seeking in practice mode.