Basic for whisper support (via jarvis-server and whisper-asr)
This commit is contained in:
parent
c24d07bb26
commit
f8796c4206
@ -45,6 +45,7 @@
|
||||
<entry key="../../../../../layout/compose-model-1641396094843.xml" value="0.33" />
|
||||
<entry key="../../../../../layout/compose-model-1641399721181.xml" value="2.0" />
|
||||
<entry key="../../../../../layout/compose-model-1641463307897.xml" value="2.0" />
|
||||
<entry key="../../../../../layout/compose-model-1641566263645.xml" value="0.33" />
|
||||
<entry key="app/src/main/res/drawable-v24/ic_launcher_foreground.xml" value="0.5307291666666667" />
|
||||
<entry key="app/src/main/res/drawable/ic_baseline_arrow_back_24.xml" value="0.38981481481481484" />
|
||||
<entry key="app/src/main/res/drawable/ic_baseline_keyboard_24.xml" value="0.38981481481481484" />
|
||||
|
@ -7,21 +7,25 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.DpOffset
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import ch.mathieubroillet.jarvis.android.R
|
||||
import ch.mathieubroillet.jarvis.android.audio.AudioRecorder
|
||||
import ch.mathieubroillet.jarvis.android.chat.ConversationUiState
|
||||
import ch.mathieubroillet.jarvis.android.chat.Message
|
||||
import ch.mathieubroillet.jarvis.android.chat.Messages
|
||||
import ch.mathieubroillet.jarvis.android.nav.Screen
|
||||
import ch.mathieubroillet.jarvis.android.ui.theme.JarvisComposeTheme
|
||||
import ch.mathieubroillet.jarvis.android.ui.theme.productSansFont
|
||||
import ch.mathieubroillet.jarvis.android.utils.DefaultBox
|
||||
import ch.mathieubroillet.jarvis.android.utils.IconAlertDialogTextField
|
||||
import ch.mathieubroillet.jarvis.android.utils.contactServerWithFileAudioRecording
|
||||
import com.github.squti.androidwaverecorder.RecorderState
|
||||
import com.github.squti.androidwaverecorder.WaveRecorder
|
||||
import org.json.JSONObject
|
||||
import kotlin.concurrent.thread
|
||||
|
||||
@ -150,13 +154,12 @@ fun DisplayMainPage(
|
||||
val requestOutput =
|
||||
contactServerWithFileAudioRecording(audioRecorder.getOutputFile())
|
||||
|
||||
val json: JSONObject = JSONObject(requestOutput)
|
||||
val sent = JSONObject(requestOutput).getString("sent").replace("\"", "")
|
||||
.replace("[", "").replace("]", "").replace(",", " ")
|
||||
sent.replaceFirstChar { sent.first().uppercase() }
|
||||
val json = JSONObject(requestOutput)
|
||||
val sent = json.getString("transcription")
|
||||
|
||||
uiState.addMessage(Message(false, sent))
|
||||
Thread.sleep(1000)
|
||||
uiState.addMessage(Message(true, json.getString("response")))
|
||||
uiState.addMessage(Message(true, json.getString("answer")))
|
||||
audioRecorder.getOutputFile().delete()
|
||||
}
|
||||
}
|
||||
@ -172,14 +175,14 @@ fun DisplayMainPage(
|
||||
}
|
||||
}
|
||||
|
||||
/*@Preview(showBackground = true)
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
fun MainPagePreview() {
|
||||
JarvisComposeTheme {
|
||||
DisplayMainPage(
|
||||
rememberNavController(), ConversationUiState(
|
||||
listOf(Message(true, stringResource(id = R.string.demo_message_1)))
|
||||
), null
|
||||
), audioRecorder = AudioRecorder("", WaveRecorder(""))
|
||||
)
|
||||
}
|
||||
}*/
|
||||
}
|
@ -1,9 +1,11 @@
|
||||
package ch.mathieubroillet.jarvis.android.utils
|
||||
|
||||
import okhttp3.Headers
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody.Companion.asRequestBody
|
||||
import okhttp3.internal.http1.HeadersReader
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
|
||||
@ -11,12 +13,38 @@ fun contactServerWithFileAudioRecording(file: File): String {
|
||||
val client = OkHttpClient()
|
||||
|
||||
val request = Request.Builder()
|
||||
.url("http://192.168.1.130:5000/process_audio_request_file")
|
||||
.post(file.asRequestBody("audio/mpeg; charset=utf-8".toMediaType()))
|
||||
.url("https://whisper.broillet.ch/process_audio_request_file")
|
||||
.post(file.asRequestBody("audio/x-wav; charset=utf-8".toMediaType()))
|
||||
.build()
|
||||
|
||||
|
||||
client.newCall(request).execute().use { response ->
|
||||
if (!response.isSuccessful) throw IOException("Unexpected code $response")
|
||||
return response.body!!.string()
|
||||
}
|
||||
|
||||
/* # SEND STT REQUEST DIRECTLY TO WHISPER ASR WITHOUT JARVIS SERVER API
|
||||
val okHttpClient = OkHttpClient()
|
||||
.newBuilder()
|
||||
.connectTimeout(60, TimeUnit.SECONDS)
|
||||
.build()
|
||||
|
||||
val fileBody: RequestBody = RequestBody.create("audio/x-wav".toMediaTypeOrNull(), file.readBytes())
|
||||
|
||||
val multipartBody: MultipartBody = MultipartBody.Builder()
|
||||
.setType(MultipartBody.FORM) // Header to show we are sending a Multipart Form Data
|
||||
.addFormDataPart("audio_file", file.name, fileBody) // file param
|
||||
.build()
|
||||
|
||||
val request = Request.Builder()
|
||||
.addHeader("Accept", "application/json")
|
||||
.addHeader("Content-Type", "multipart/form-data")
|
||||
.url("http://192.168.1.208:9000/asr?task=transcribe&language=fr&output=json")
|
||||
.post(multipartBody)
|
||||
.build()
|
||||
|
||||
okHttpClient.newCall(request).execute().use { response ->
|
||||
if (!response.isSuccessful) throw IOException("Unexpected code $response")
|
||||
return response.body!!.string()
|
||||
}*/
|
||||
}
|
Loading…
Reference in New Issue
Block a user