diff options
Diffstat (limited to 'extra/stt.go')
| -rw-r--r-- | extra/stt.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/extra/stt.go b/extra/stt.go index 3809487..fd9e419 100644 --- a/extra/stt.go +++ b/extra/stt.go @@ -12,6 +12,7 @@ import ( "net/http" "regexp" "strings" + "syscall" "github.com/gordonklaus/portaudio" ) @@ -145,6 +146,21 @@ func (stt *WhisperServer) IsRecording() bool { } func (stt *WhisperServer) microphoneStream(sampleRate int) error { + // Temporarily redirect stderr to suppress ALSA warnings during PortAudio init + origStderr, err := syscall.Dup(syscall.Stderr) + nullFD, err := syscall.Open("/dev/null", syscall.O_WRONLY, 0) + if err != nil { + return fmt.Errorf("failed to open /dev/null: %w", err) + } + // redirect stderr + syscall.Dup2(nullFD, syscall.Stderr) + // Initialize PortAudio (this is where ALSA warnings occur) + defer func() { + // Restore stderr + syscall.Dup2(origStderr, syscall.Stderr) + syscall.Close(origStderr) + syscall.Close(nullFD) + }() if err := portaudio.Initialize(); err != nil { return fmt.Errorf("portaudio init failed: %w", err) } |
