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 && } ); } /*