You can save the audio captured during speech recognition by enabling recordingOptions.persist in the start() method. When enabled, the module emits { uri: string } in the audiostart and audioend events, providing the local file path.
Important Requirements:
- Available on Android 13+ and iOS.
- Always call
supportsRecording() to verify availability before attempting to use this feature. - Do not attempt to access the file until the
audioend event has been emitted.
Default Output Formats:
- Android: Linear PCM (16000 Hz, mono).
- iOS: 32-bit Float PCM (44100/48000 Hz, mono). You can customize this using
recordingOptions.outputSampleRate and recordingOptions.outputEncoding.
import { useState } from "react";
import {
ExpoSpeechRecognitionModule,
useSpeechRecognitionEvent,
} from "expo-speech-recognition";
function RecordAudio() {
const [recording, setRecording] = useState(false);
const [recordingUri, setRecordingUri] = useState<string | null>(null);
const handleStart = () => {
setRecording(true);
ExpoSpeechRecognitionModule.start({
lang: "en-US",
recordingOptions: {
persist: true,
outputDirectory: "/path/to/directory",
outputFileName: "recording.wav",
outputSampleRate: 16000, // iOS only
outputEncoding: "pcmFormatInt16", // iOS only
},
});
};
useSpeechRecognitionEvent("audiostart", (event) => {
console.log("Recording started for file:", event.uri);
});
useSpeechRecognitionEvent("audioend", (event) => {
console.log("Local file path:", event.uri);
setRecordingUri(event.uri);
});
// ... render logic
}