Day 2: Recording Voice Memos Using Expo AV #VoiceRecording #SalesAssistant

On Day 2, we’ll enable voice memo recording in our AI-powered sales assistant app using Expo AV Audio API. This will allow sales professionals to record quick notes after a client meeting, which we’ll later convert into GPT-powered CRM entries.


1. Why Add Voice Memo Recording?

Faster Data Entry – Sales teams often prefer speaking over typing.
Accurate Meeting Notes – Capture details immediately after meetings.
Foundation for GPT Summarization – Tomorrow, we’ll transcribe and auto-summarize these memos.


2. Installing Expo AV

Ensure you have Expo AV installed:

expo install expo-av

3. Creating the Voice Memo Recorder Component

Step 1: Create VoiceRecorder.js

Inside src/components/VoiceRecorder.js:

import React, { useState } from 'react';
import { View, Button, Text, StyleSheet } from 'react-native';
import { Audio } from 'expo-av';

export default function VoiceRecorder({ onRecordingComplete }) {
    const [recording, setRecording] = useState(null);
    const [status, setStatus] = useState('Idle');

    const startRecording = async () => {
        try {
            await Audio.requestPermissionsAsync();
            await Audio.setAudioModeAsync({
                allowsRecordingIOS: true,
                playsInSilentModeIOS: true,
            });

            const { recording } = await Audio.Recording.createAsync(
                Audio.RecordingOptionsPresets.HIGH_QUALITY
            );
            setRecording(recording);
            setStatus('Recording...');
        } catch (err) {
            console.error('Failed to start recording', err);
        }
    };

    const stopRecording = async () => {
        try {
            setStatus('Stopping...');
            await recording.stopAndUnloadAsync();
            const uri = recording.getURI();
            setRecording(null);
            setStatus('Idle');
            onRecordingComplete(uri);
        } catch (err) {
            console.error('Failed to stop recording', err);
        }
    };

    return (
        <View style={styles.container}>
            <Text>Status: {status}</Text>
            <Button
                title={recording ? 'Stop Recording' : 'Start Recording'}
                onPress={recording ? stopRecording : startRecording}
            />
        </View>
    );
}

const styles = StyleSheet.create({
    container: { padding: 10, alignItems: 'center' },
});

4. Integrating VoiceRecorder with Home Screen

Step 1: Modify HomeScreen.js

import React, { useState } from 'react';
import { View, Text, Button, StyleSheet, Alert } from 'react-native';
import VoiceRecorder from '../components/VoiceRecorder';

export default function HomeScreen() {
    const [recordingUri, setRecordingUri] = useState(null);

    const handleRecordingComplete = (uri) => {
        setRecordingUri(uri);
        Alert.alert('Recording Saved', `Saved to: ${uri}`);
    };

    return (
        <View style={styles.container}>
            <Text style={styles.title}>AI Sales Assistant</Text>
            <VoiceRecorder onRecordingComplete={handleRecordingComplete} />
            {recordingUri && <Text>Memo Saved: {recordingUri}</Text>}
        </View>
    );
}

const styles = StyleSheet.create({
    container: { flex: 1, justifyContent: 'center', alignItems: 'center' },
    title: { fontSize: 24, fontWeight: 'bold', marginBottom: 20 },
});

5. Testing Voice Recording

Run the App

npx expo start

Test Flow

ActionExpected Result
Tap Start RecordingApp starts recording voice memo.
Tap Stop RecordingMemo is saved; URI displayed on screen.
Memo Saved MessageShows the file path (e.g., file:///...).

6. Optional: Play Back Recorded Memo

Modify VoiceRecorder.js

const playRecording = async () => {
    const { sound } = await Audio.Sound.createAsync({ uri: recordingUri });
    await sound.playAsync();
};

Add Play Button in HomeScreen.js

{recordingUri && (
    <Button title="Play Recording" onPress={() => playRecording(recordingUri)} />
)}

7. Preparing for Tomorrow: Transcribing the Memo

Tomorrow, we’ll:

  • Convert voice memos to text using Google Speech-to-Text or AssemblyAI.
  • Send the transcription to GPT API to generate structured CRM notes.
See also  Handling Fallbacks in Laravel: Errors, Warnings, and Best Practices

8. Key Concepts Covered

✅ Integrated Expo AV Audio API for voice memo recording.
✅ Created a reusable VoiceRecorder component.
✅ Saved recording URI for future processing.


9. Next Steps: Transcribing Voice Memos with AI

Tomorrow, we’ll:

  • Upload recorded audio.
  • Transcribe it into text using speech-to-text services.

10. References & Learning Resources


11. SEO Keywords:

React Native voice memo recording, Expo AV audio API, sales assistant voice notes, React Native speech-to-text app, voice assistant memo app.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.