voice handler
This commit is contained in:
parent
8070babf1d
commit
627b5badb2
1
agent-mobile/artimobile/.env
Normal file
1
agent-mobile/artimobile/.env
Normal file
@ -0,0 +1 @@
|
||||
TTS_BACKEND_URL=http://192.168.0.10:9008/asr
|
@ -2,6 +2,7 @@
|
||||
import React, { Component } from 'react';
|
||||
import { View, Text, Button } from 'react-native';
|
||||
import Voice from '@react-native-voice/voice';
|
||||
import Config from 'react-native-config';
|
||||
|
||||
class VoiceHandler extends Component {
|
||||
constructor(props) {
|
||||
@ -10,6 +11,7 @@ class VoiceHandler extends Component {
|
||||
recognized: '',
|
||||
started: '',
|
||||
results: [],
|
||||
isRecording: false,
|
||||
};
|
||||
|
||||
Voice.onSpeechStart = this.onSpeechStart.bind(this);
|
||||
@ -44,22 +46,57 @@ class VoiceHandler extends Component {
|
||||
recognized: '',
|
||||
started: '',
|
||||
results: [],
|
||||
isRecording: true,
|
||||
});
|
||||
|
||||
try {
|
||||
await Voice.start('en-US');
|
||||
await Voice.start('en-US'); // Start the voice recognition
|
||||
} catch (error) {
|
||||
console.error('There was an error starting voice recognition:', error);
|
||||
this.setState({
|
||||
isRecording: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
async _stopRecognizing() {
|
||||
try {
|
||||
await Voice.stop();
|
||||
this.setState({
|
||||
isRecording: false,
|
||||
});
|
||||
// Assuming you have the audio data, send it to your backend
|
||||
this._sendAudioToBackend(this.state.results);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
_sendAudioToBackend(results) {
|
||||
// Placeholder: Convert `results` or actual audio data to a format acceptable by your backend
|
||||
const formData = new FormData();
|
||||
// formData.append('audio', {uri: 'path_to_audio_file', type: 'audio/x-m4a', name: 'audio.m4a'});
|
||||
|
||||
fetch(process.env.TTS_BACKEND_URL, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
})
|
||||
.then(response => response.text())
|
||||
.then(body => {
|
||||
console.log('Audio sent to backend, response:', body);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Failed to send audio:', error);
|
||||
});
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<View>
|
||||
<Text>Press the button and start speaking.</Text>
|
||||
<Button
|
||||
onPress={this._startRecognizing.bind(this)}
|
||||
title="Start Recognizing"
|
||||
onPress={() => this.state.isRecording ? this._stopRecognizing() : this._startRecognizing()}
|
||||
title={this.state.isRecording ? "Stop Recognizing" : "Start Recognizing"}
|
||||
/>
|
||||
<Text>Recognized: {this.state.recognized}</Text>
|
||||
<Text>Started: {this.state.started}</Text>
|
||||
|
@ -12,7 +12,8 @@
|
||||
"dependencies": {
|
||||
"@react-native-voice/voice": "^3.2.4",
|
||||
"react": "18.2.0",
|
||||
"react-native": "0.73.4"
|
||||
"react-native": "0.73.4",
|
||||
"react-native-config": "^1.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
|
Loading…
x
Reference in New Issue
Block a user