You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
import SwiftUI
|
|
import AVFoundation
|
|
|
|
struct ContentView: View {
|
|
@StateObject var whisperState = WhisperState()
|
|
|
|
var body: some View {
|
|
NavigationStack {
|
|
VStack {
|
|
HStack {
|
|
Button("Transcribe", action: {
|
|
Task {
|
|
await whisperState.transcribeSample()
|
|
}
|
|
})
|
|
.buttonStyle(.bordered)
|
|
.disabled(!whisperState.canTranscribe)
|
|
|
|
Button(whisperState.isRecording ? "Stop recording" : "Start recording", action: {
|
|
Task {
|
|
await whisperState.toggleRecord()
|
|
}
|
|
})
|
|
.buttonStyle(.bordered)
|
|
.disabled(!whisperState.canTranscribe)
|
|
}
|
|
|
|
ScrollView {
|
|
Text(verbatim: whisperState.messageLog)
|
|
.frame(maxWidth: .infinity, alignment: .leading)
|
|
}
|
|
}
|
|
.navigationTitle("Whisper SwiftUI Demo")
|
|
.padding()
|
|
}
|
|
}
|
|
}
|
|
|
|
struct ContentView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
ContentView()
|
|
}
|
|
}
|