Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
21_22-J 38
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
21_22-J 38
21_22-J 38
Commits
8b02b03e
Commit
8b02b03e
authored
Apr 24, 2022
by
W.D.R.P. Sandeepa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
delete
parent
b850fd89
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
83 deletions
+0
-83
API/keyword_spotting_service.py
API/keyword_spotting_service.py
+0
-83
No files found.
API/keyword_spotting_service.py
deleted
100644 → 0
View file @
b850fd89
import
tensorflow.keras
as
keras
import
numpy
as
np
import
librosa
MODEL_PATH
=
"model.h5"
NUM_SAMPLES_TO_CONSIDER
=
22050
# 1 sec
class
_Keyword_Spotting_Service
:
model
=
None
_mappings
=
[
"black"
,
"blue"
,
"green"
,
"red"
,
"white"
,
"yellow"
]
_instance
=
None
# 78293
def
predict
(
self
,
file_path
,
FPFN
):
print
(
f
"{file_path}"
)
# extract MFCCs
MFCCs
=
self
.
preprocess
(
file_path
)
# (# segment, # coefficients)
# convert 2d MFCCs array into 4d array -> (# samples, # segment, # coefficients, # channels)
MFCCs
=
MFCCs
[
np
.
newaxis
,
...
,
np
.
newaxis
]
# make prediction
predictions
=
self
.
model
.
predict
(
MFCCs
)
predicted_index
=
np
.
argmax
(
predictions
)
predicted_keyword
=
self
.
_mappings
[
predicted_index
]
# return predicted_keyword
if
predicted_keyword
==
FPFN
:
return
predicted_keyword
else
:
return
"No Prediction"
def
preprocess
(
self
,
file_path
,
n_mfcc
=
13
,
n_fft
=
2048
,
hop_length
=
512
):
# load audio file
signal
,
sr
=
librosa
.
load
(
file_path
)
# ensure consistency in the audio file length
if
len
(
signal
)
>
NUM_SAMPLES_TO_CONSIDER
:
signal
=
signal
[:
NUM_SAMPLES_TO_CONSIDER
]
# extract MFCCs
MFCCs
=
librosa
.
feature
.
mfcc
(
signal
,
n_mfcc
=
n_mfcc
,
n_fft
=
n_fft
,
hop_length
=
hop_length
)
return
MFCCs
.
T
def
Keyword_Spotting_service
():
# ensure that we only have 1 instance of KSS
if
_Keyword_Spotting_Service
.
_instance
is
None
:
_Keyword_Spotting_Service
.
_instance
=
_Keyword_Spotting_Service
()
_Keyword_Spotting_Service
.
model
=
keras
.
models
.
load_model
(
MODEL_PATH
)
return
_Keyword_Spotting_Service
.
_instance
if
__name__
==
"__main__"
:
kss
=
Keyword_Spotting_service
()
keyword1
=
kss
.
predict
(
"test/black.wav"
)
keyword2
=
kss
.
predict
(
"test/blue.wav"
)
keyword3
=
kss
.
predict
(
"test/green.wav"
)
keyword4
=
kss
.
predict
(
"test/red.wav"
)
keyword5
=
kss
.
predict
(
"test/white.wav"
)
keyword6
=
kss
.
predict
(
"test/yellow.wav"
)
keyword7
=
kss
.
predict
(
"test/other.wav"
)
print
(
f
"Predicted Keywords: {keyword1}"
)
print
(
f
"Predicted Keywords: {keyword2}"
)
print
(
f
"Predicted Keywords: {keyword3}"
)
print
(
f
"Predicted Keywords: {keyword4}"
)
print
(
f
"Predicted Keywords: {keyword5}"
)
print
(
f
"Predicted Keywords: {keyword6}"
)
print
(
f
"Predicted Keywords: {keyword7}"
)
\ No newline at end of file
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