VAD语音活动检测(Voice Activity Detection,VAD)算法的难点是分析噪音还是人声,顶顶通公司经过1年的努力,基于20G的噪音声音文件和100G的正常人声的声音文件,使用tdnn(时延神经网络)和 lstm(长短期记忆网络)训练出噪音人声音判别模型。现在发布二次开发供大家测试。
和FreeSWITCH集成的开源例子 再这里 https://github.com/cdevelop/FreeSWITCH-ASR
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112/*! 顶顶通VAD,集成SAD(噪音人声识别)程序 1.0 本程序包的授权文件是10并发1个月的体验授权,仅用于体验和测试使用,商业使用请联系 顶顶通购买正式授权 本接口提供了VAD和SAD(人声识别) 2个接口 SAD接口只使用神经网络算法进行处理。 VAD接口如果noise_filter_level设置大于0.8就会启用SAD(神经网络算法)来优化VAD效果,如果低于0.8就是普通的VAD。 SAD接口需要CPU比较多 VAD接口(noise_filter_level设置大于0.8),只有VAD检测到声音,才启用神经网络算法分析是人身还是噪音,可以节约大量的CPU,也可以达到和单独使用SAD接口类似的效果。 */ #ifndef _DD_VAD_H_ #define _DD_VAD_H_ #include <stddef.h> #include "stdbool.h" #if !defined(_WIN32) || defined(SAD_STATIC) #define SAD_API #else #ifdef LIBSAD_EXPORTS #define SAD_API __declspec(dllexport) #else #define SAD_API __declspec(dllimport) #endif #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ SAD_API int libsad_init(const char *license_file, const char *model_dir); SAD_API void libsad_clean(); SAD_API void libsad_license(char *buffer,size_t len); typedef struct DD_SAD_T DD_SAD; SAD_API DD_SAD* dd_sad_new(); SAD_API void dd_sad_destory(DD_SAD* sad); SAD_API int dd_sad_frame_size(DD_SAD* sad, int freq); SAD_API int dd_sad_frames_right_context(DD_SAD* sad, int freq); //0:非人声 1:人声 SAD_API int dd_sad_process(DD_SAD* sad, const short* samples, size_t len, int freq, bool last); //返回已经提交处理样本数量 SAD_API size_t dd_sad_count(DD_SAD* sad); //返回当前状态持续样本数量 SAD_API size_t dd_sad_duration(DD_SAD* sad); //返回未处理的样本 SAD_API size_t dd_sad_pending(DD_SAD* sad); //把未处理的数据处理完成并且释放sad SAD_API int dd_sad_finish(DD_SAD* sad, size_t* sad_count, size_t* voice_begin, size_t* voice_end); typedef enum { DD_VAD_MODE_QUALITY = 0, DD_VAD_MODE_LOWBITRATE = 1, DD_VAD_MODE_AGGRESSIVE = 2, DD_VAD_MODE_VERYAGGRESSIVE = 3 } DD_VAD_MODE; typedef struct DD_VAD_T DD_VAD; //frame_time 必须 10,20,30中的一个 //min_activity_time 声音时间大于它,进入活动状态 //min_silence_time 静音时间大于它,进入静音状态 //noise_filter_level 0-1 ,0.8以上会启用噪音人声识别算法优化VAD效果。 SAD_API DD_VAD* dd_vad_create(int freq_hz, int frame_time, size_t cache_ms, DD_VAD_MODE mode, int min_activity_time, int min_silence_time, int voice_threshold, double noise_filter_level); SAD_API void dd_vad_destory(DD_VAD* vad); SAD_API void dd_vad_reset(DD_VAD* vad, DD_VAD_MODE mode, int min_activity_time, int min_silence_time, int threshold, double filter); SAD_API void dd_vad_reset_default(DD_VAD* vad); //0:静音 1:声音 -1:错误 SAD_API int dd_vad_process(DD_VAD* vad, const short* samples, size_t len); //把未决的数据处理完成 SAD_API int dd_vad_last(DD_VAD* vad); //返回vad状态 0 静音 1 未决[SAD分析中] 2声音 SAD_API int dd_vad_status(DD_VAD* vad); //返回提交处理采样总数 SAD_API size_t dd_vad_count(DD_VAD* vad); //返回当前状态的采样数 SAD_API size_t dd_vad_duration(DD_VAD* vad); //返回上一个状态的采样数 SAD_API size_t dd_vad_prev_duration(DD_VAD* vad); //返回当前状态的未确定采样数 SAD_API size_t dd_vad_pend_duration(DD_VAD* vad); //boottime声音前面多少毫秒的声音返回 //first_len,second_len 为样本个数,不是字节数。 SAD_API size_t dd_vad_cachedata(DD_VAD* vad, size_t boottime, short** first_sample, size_t* first_len, short** second_sample, size_t* second_len); #ifdef __cplusplus } #endif /* __cplusplus */ #endif
最后
以上就是光亮草莓最近收集整理的关于顶顶通VAD(支持噪音人声识别)二次开发接口发布拉的全部内容,更多相关顶顶通VAD(支持噪音人声识别)二次开发接口发布拉内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复