Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
e516374d
Commit
e516374d
authored
Jun 07, 2024
by
Timothy J. Baek
Browse files
feat: external stt
parent
55dc6c1b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
28 deletions
+62
-28
backend/apps/audio/main.py
backend/apps/audio/main.py
+62
-28
No files found.
backend/apps/audio/main.py
View file @
e516374d
...
...
@@ -240,39 +240,73 @@ def transcribe(
f
.
write
(
contents
)
f
.
close
()
whisper_kwargs
=
{
"model_size_or_path"
:
WHISPER_MODEL
,
"device"
:
whisper_device_type
,
"compute_type"
:
"int8"
,
"download_root"
:
WHISPER_MODEL_DIR
,
"local_files_only"
:
not
WHISPER_MODEL_AUTO_UPDATE
,
}
log
.
debug
(
f
"whisper_kwargs:
{
whisper_kwargs
}
"
)
try
:
model
=
WhisperModel
(
**
whisper_kwargs
)
except
:
log
.
warning
(
"WhisperModel initialization failed, attempting download with local_files_only=False"
if
app
.
state
.
config
.
STT_ENGINE
==
""
:
whisper_kwargs
=
{
"model_size_or_path"
:
WHISPER_MODEL
,
"device"
:
whisper_device_type
,
"compute_type"
:
"int8"
,
"download_root"
:
WHISPER_MODEL_DIR
,
"local_files_only"
:
not
WHISPER_MODEL_AUTO_UPDATE
,
}
log
.
debug
(
f
"whisper_kwargs:
{
whisper_kwargs
}
"
)
try
:
model
=
WhisperModel
(
**
whisper_kwargs
)
except
:
log
.
warning
(
"WhisperModel initialization failed, attempting download with local_files_only=False"
)
whisper_kwargs
[
"local_files_only"
]
=
False
model
=
WhisperModel
(
**
whisper_kwargs
)
segments
,
info
=
model
.
transcribe
(
file_path
,
beam_size
=
5
)
log
.
info
(
"Detected language '%s' with probability %f"
%
(
info
.
language
,
info
.
language_probability
)
)
whisper_kwargs
[
"local_files_only"
]
=
False
model
=
WhisperModel
(
**
whisper_kwargs
)
segments
,
info
=
model
.
transcribe
(
file_path
,
beam_size
=
5
)
log
.
info
(
"Detected language '%s' with probability %f"
%
(
info
.
language
,
info
.
language_probability
)
)
transcript
=
""
.
join
([
segment
.
text
for
segment
in
list
(
segments
)])
# save the transcript to a json file
transcript_file
=
f
"
{
file_dir
}
/
{
id
}
.json"
with
open
(
transcript_file
,
"w"
)
as
f
:
json
.
dump
({
"transcript"
:
transcript
},
f
)
transcript
=
""
.
join
([
segment
.
text
for
segment
in
list
(
segments
)])
return
{
"text"
:
transcript
.
strip
()}
# save the transcript to a json file
transcript_file
=
f
"
{
file_dir
}
/
{
id
}
.json"
with
open
(
transcript_file
,
"w"
)
as
f
:
json
.
dump
({
"transcript"
:
transcript
},
f
)
elif
app
.
state
.
config
.
STT_ENGINE
==
"openai"
:
headers
=
{
"Authorization"
:
f
"Bearer
{
app
.
state
.
config
.
STT_OPENAI_API_KEY
}
"
}
return
{
"text"
:
transcript
.
strip
()}
files
=
{
"file"
:
(
filename
,
open
(
file_path
,
"rb"
))}
data
=
{
"model"
:
"whisper-1"
}
r
=
None
try
:
r
=
requests
.
post
(
url
=
f
"
{
app
.
state
.
config
.
STT_OPENAI_API_BASE_URL
}
/audio/transcriptions"
,
headers
=
headers
,
files
=
files
,
data
=
data
,
)
r
.
raise_for_status
()
return
r
.
json
()
except
Exception
as
e
:
log
.
exception
(
e
)
error_detail
=
"Open WebUI: Server Connection Error"
if
r
is
not
None
:
try
:
res
=
r
.
json
()
if
"error"
in
res
:
error_detail
=
f
"External:
{
res
[
'error'
][
'message'
]
}
"
except
:
error_detail
=
f
"External:
{
e
}
"
raise
HTTPException
(
status_code
=
r
.
status_code
if
r
!=
None
else
500
,
detail
=
error_detail
,
)
except
Exception
as
e
:
log
.
exception
(
e
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment