import * as React from 'react';
import { Text, View, StyleSheet, Button,TouchableHighlight,ActivityIndicator,Alert,Image} from 'react-native';
import { Audio } from 'expo-av';
import axios from 'axios';
import { Feather } from '@expo/vector-icons';
import { EvilIcons } from '@expo/vector-icons';
import { FontAwesome } from '@expo/vector-icons';
export default function App() {
const [recording, setRecording] = React.useState();
const [recognition,setRecognition] = React.useState();
const [caesarson,setCaesarOn] = React.useState(false);
const [recognizing,setRecognizing] = React.useState(false);
async function turncaesaron(){
setRecognizing(true)
const response = await axios.get("https://palondomus-caesarai.hf.space")
if (response.data === "Welcome to CaesarAI's API's and CaesarAINL."){
console.log(response.data)
setCaesarOn(true)
setRecognizing(false)
}
}
const toCapitalize = (str) => {
return str.charAt(0).toUpperCase() + str.slice(1);
};
async function startRecording() {
try {
if (caesarson === true){
console.log('Requesting permissions..');
await Audio.requestPermissionsAsync();
await Audio.setAudioModeAsync({
allowsRecordingIOS: true,
playsInSilentModeIOS: true,
});
console.log('Starting recording..');
const recording = new Audio.Recording();
await recording.prepareToRecordAsync(Audio.RECORDING_OPTIONS_PRESET_HIGH_QUALITY);
await recording.startAsync();
setRecording(recording);
console.log('Recording started');}
else{
Alert.alert("Turn CaesarON")
}
} catch (err) {
console.error('Failed to start recording', err);
}
}
async function stopRecording() {
// utitlity function to convert BLOB to BASE64
const blobToBase64 = (blob) => {
const reader = new FileReader();
reader.readAsDataURL(blob);
return new Promise((resolve) => {
reader.onloadend = () => {
resolve(reader.result);
};
});
};
console.log('Stopping recording..');
setRecording(undefined);
await recording.stopAndUnloadAsync();
const uri = recording.getURI();
const blob = await new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = function () {
resolve(xhr.response);
};
xhr.onerror = function (e) {
reject(new TypeError("Network request failed"));
};
xhr.responseType = "blob";
xhr.open("GET", uri, true);
xhr.send(null);
});
const audioBase64 = await blobToBase64(blob);
setRecognizing(true)
const response = await axios.post("https://palondomus-caesarai.hf.space/caesarsr",{"audio_data":audioBase64})
//console.log(response.data)
setRecognition(response.data.message)
setRecognizing(false)
//console.log('Recording stopped and stored at', uri);
blob.close()
}
return (
{ recognition !== undefined &&
{toCapitalize(recognition+".")}
}
{recognizing === true && }
);
}
/* */
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20,
},
});
/*
{recognition}
*/