Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
sherpaonnx
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
chiiyeh
2024-04-16 17:29:46 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2024-04-16 17:29:46 +0800
Commit
aa2d695fd24846afb3c8b8c23b94783c3b85f313
aa2d695f
1 parent
6bf20997
Add score function to speaker identification (#775)
隐藏空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
32 行增加
和
0 行删除
sherpa-onnx/csrc/speaker-embedding-manager.cc
sherpa-onnx/csrc/speaker-embedding-manager.h
sherpa-onnx/python/csrc/speaker-embedding-manager.cc
sherpa-onnx/csrc/speaker-embedding-manager.cc
查看文件 @
aa2d695
...
...
@@ -151,6 +151,23 @@ class SpeakerEmbeddingManager::Impl {
return
true
;
}
float
Score
(
const
std
::
string
&
name
,
const
float
*
p
)
{
if
(
!
name2row_
.
count
(
name
))
{
// Setting a default value if the name is not found
return
-
2.0
;
}
int32_t
row_idx
=
name2row_
.
at
(
name
);
Eigen
::
VectorXf
v
=
Eigen
::
Map
<
Eigen
::
VectorXf
>
(
const_cast
<
float
*>
(
p
),
dim_
);
v
.
normalize
();
float
score
=
embedding_matrix_
.
row
(
row_idx
)
*
v
;
return
score
;
}
bool
Contains
(
const
std
::
string
&
name
)
const
{
return
name2row_
.
count
(
name
)
>
0
;
}
...
...
@@ -206,6 +223,11 @@ bool SpeakerEmbeddingManager::Verify(const std::string &name, const float *p,
return
impl_
->
Verify
(
name
,
p
,
threshold
);
}
float
SpeakerEmbeddingManager
::
Score
(
const
std
::
string
&
name
,
const
float
*
p
)
const
{
return
impl_
->
Score
(
name
,
p
);
}
int32_t
SpeakerEmbeddingManager
::
NumSpeakers
()
const
{
return
impl_
->
NumSpeakers
();
}
...
...
sherpa-onnx/csrc/speaker-embedding-manager.h
查看文件 @
aa2d695
...
...
@@ -74,6 +74,8 @@ class SpeakerEmbeddingManager {
*/
bool
Verify
(
const
std
::
string
&
name
,
const
float
*
p
,
float
threshold
)
const
;
float
Score
(
const
std
::
string
&
name
,
const
float
*
p
)
const
;
// Return true if the given speaker already exists; return false otherwise.
bool
Contains
(
const
std
::
string
&
name
)
const
;
...
...
sherpa-onnx/python/csrc/speaker-embedding-manager.cc
查看文件 @
aa2d695
...
...
@@ -60,6 +60,14 @@ void PybindSpeakerEmbeddingManager(py::module *m) {
return
self
.
Verify
(
name
,
v
.
data
(),
threshold
);
},
py
::
arg
(
"name"
),
py
::
arg
(
"v"
),
py
::
arg
(
"threshold"
),
py
::
call_guard
<
py
::
gil_scoped_release
>
())
.
def
(
"score"
,
[](
const
PyClass
&
self
,
const
std
::
string
&
name
,
const
std
::
vector
<
float
>
&
v
)
->
float
{
return
self
.
Score
(
name
,
v
.
data
());
},
py
::
arg
(
"name"
),
py
::
arg
(
"v"
),
py
::
call_guard
<
py
::
gil_scoped_release
>
());
}
...
...
请
注册
或
登录
后发表评论