diff --git a/Whisper.go b/Whisper.go index acdeaeb..3d47be7 100644 --- a/Whisper.go +++ b/Whisper.go @@ -15,7 +15,6 @@ import ( type Response struct { Text string `json:"text"` - // add other fields as needed } func Whisper(pathToFind string) string { diff --git a/aigenUi/database.go b/aigenUi/database.go index 36749e8..4ec6c0c 100644 --- a/aigenUi/database.go +++ b/aigenUi/database.go @@ -31,6 +31,26 @@ func ChangeSetting(soundIsOn int) { } } +func ChangeVoice(provider string) { + db, err := sql.Open("sqlite3", SettingsDB) + if err != nil { + log.Printf("Error opening database: %v", err) + } + defer func(db *sql.DB) { + err := db.Close() + if err != nil { + log.Println(err) + } + + }(db) + + // Insert the keylogger into the database + _, err = db.Exec("INSERT INTO settings (speech_provider) VALUES (?)", provider) + if err != nil { + log.Printf("Error inserting into database: %v", err) + } +} + func SoundIsOffON(soundIsOff int) { db, err := sql.Open("sqlite3", SettingsDB) if err != nil { diff --git a/aigenUi/uiSettingsTab.go b/aigenUi/uiSettingsTab.go index 20db42f..dd3f5af 100644 --- a/aigenUi/uiSettingsTab.go +++ b/aigenUi/uiSettingsTab.go @@ -43,6 +43,19 @@ func AudioSettingsTab() *container.TabItem { return audioSettingsTab } +func DualVoiceSettings() *container.TabItem { + DualVoice := container.NewTabItem("Dual Speech Settings", + widget.NewSelect([]string{"AzureSpeech", "OpenAI"}, func(value string) { + log.Println("Select set to", value) + //UpdateSpeechProvider(value) + })) + return DualVoice +} + +func UpdateSpeechProvider(value string) { + ChangeVoice(value) +} + func AudioSettings(soundIsOn int) { ChangeSetting(soundIsOn) } diff --git a/aigenUi/windowSettings.go b/aigenUi/windowSettings.go index 5ec1b41..29f5c58 100644 --- a/aigenUi/windowSettings.go +++ b/aigenUi/windowSettings.go @@ -1,6 +1,8 @@ package aigenUi -import "fyne.io/fyne/v2" +import ( + "fyne.io/fyne/v2" +) var WindowSize = fyne.NewSize(1200, 1200) var MainTitle = "Sage" diff --git a/dbChef.go b/dbChef.go index c5cb2b1..6b8f74d 100644 --- a/dbChef.go +++ b/dbChef.go @@ -133,6 +133,7 @@ func createSettingsDatabase() error { platform TEXT DEFAULT NULL, audioOnly INTEGER DEFAULT 1, theme TEXT DEFAULT 'auto', + voice TEXT DEFAULT 'AZURESPEECH', language TEXT DEFAULT NULL, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, accessToken TEXT DEFAULT NULL, diff --git a/main.go b/main.go index 905b013..27eb9e7 100644 --- a/main.go +++ b/main.go @@ -21,6 +21,7 @@ func main() { mapungubwe.Settings().SetTheme(theme.DarkTheme()) aigenUi.SwitchUp(mapungubwe) + playWelcomeSound() tabs, inputBoxContainer := mainApp(mapungubwe) window := mapungubwe.NewWindow(aigenUi.MainTitle) diff --git a/mainApp.go b/mainApp.go index 65a6f6e..25dcb18 100644 --- a/mainApp.go +++ b/mainApp.go @@ -16,9 +16,10 @@ func mainApp(mapungubwe fyne.App) (*container.AppTabs, *container.Split) { chatMediaTab := aigenUi.UserMedia() //developerMode := aigenUi.Developer() audioSettingsTab := aigenUi.AudioSettingsTab() + DualVoiceSettings := aigenUi.DualVoiceSettings() //Create the tabs container and add the tabs to it tabs := container.NewAppTabs(aiGen, //financeTab, - extendAI, chatMediaTab, settingsTab, audioSettingsTab) + extendAI, chatMediaTab, settingsTab, audioSettingsTab, DualVoiceSettings) inputBoxContainer := SignInHandler(chat, tabs, aiGen) diff --git a/speech.go b/speech.go index 14d8d97..5d116d9 100644 --- a/speech.go +++ b/speech.go @@ -7,10 +7,14 @@ import ( ) const notificationSoundFile = "notification.mp3" +const welcomeNotificationSoundFile = "welcome.mp3" func pressPlayAudio(messageCall string) (bool, string) { //Azure Speech - + //TODO:: Allow switching of speech providers to allow for easy management of resources in cases + //were Azure Speech starts to act real funny we can pull the plug real quick + //soundFileName, checkError := aigenRest.SpeakOut(messageCall) + //soundFileName, checkError := aigenRest.GCloudSpeakOUt(messageCall) soundFileName, checkError := aigenRest.GptSpeakOut(messageCall) if checkError == nil { @@ -23,7 +27,6 @@ func pressPlayAudio(messageCall string) (bool, string) { } else { log.Println(checkError) } - return true, soundFileName } @@ -41,6 +44,13 @@ func playVoiceNote(filename string) { } } +func playWelcomeSound() { + err := aigenAudioAutoPlay.PlayAudioPlayback(welcomeNotificationSoundFile) + if err != nil { + return + } +} + func getAudioFile(message string) { audioFile, err := getAudio(message) if err != nil {