sip-lab 1.22.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/binding.gyp +4 -0
- package/build_deps.sh +21 -1
- package/index.js +19 -0
- package/package.json +3 -2
- package/pocketsphinx/model/CMakeLists.txt +3 -0
- package/pocketsphinx/model/en-us/cmudict-en-us.dict +134782 -0
- package/pocketsphinx/model/en-us/en-us/README +34 -0
- package/pocketsphinx/model/en-us/en-us/feat.params +12 -0
- package/pocketsphinx/model/en-us/en-us/mdef +0 -0
- package/pocketsphinx/model/en-us/en-us/means +0 -0
- package/pocketsphinx/model/en-us/en-us/noisedict +5 -0
- package/pocketsphinx/model/en-us/en-us/sendump +0 -0
- package/pocketsphinx/model/en-us/en-us/transition_matrices +0 -0
- package/pocketsphinx/model/en-us/en-us/variances +0 -0
- package/pocketsphinx/model/en-us/en-us-phone.lm.bin +0 -0
- package/pocketsphinx/model/en-us/en-us.lm.bin +0 -0
- package/prebuilds/linux-x64/sip-lab.node +0 -0
- package/samples/artifacts/hello_good_morning.wav +0 -0
- package/samples/play_wav_and_speech_recog.bad_transcript.pcmu8000.js +182 -0
- package/samples/speech_synth_and_recog.speex16000.js +186 -0
- package/samples/start_play_wav_with_end_of_file_event.js +269 -0
- package/samples/start_play_wav_with_no_loop.js +257 -0
- package/samples/tcp_and_extra_headers.js +47 -1
- package/samples/text_to_speech.js +22 -3
- package/src/addon.cpp +72 -0
- package/src/event_templates.cpp +20 -7
- package/src/event_templates.hpp +6 -0
- package/src/pjmedia/include/pjmedia/flite_port.h +10 -4
- package/src/pjmedia/include/pjmedia/pocketsphinx_port.h +19 -0
- package/src/pjmedia/src/pjmedia/flite_port.c +91 -25
- package/src/pjmedia/src/pjmedia/pocketsphinx_port.c +273 -0
- package/src/sip.cpp +707 -507
- package/src/sip.hpp +5 -0
package/README.md
CHANGED
|
@@ -8,17 +8,18 @@ It uses pjproject for SIP and media processing.
|
|
|
8
8
|
It permits to:
|
|
9
9
|
- make audio calls using UDP, TCP and TLS transports
|
|
10
10
|
- send/receive DTMF inband/RFC2833/INFO.
|
|
11
|
-
- play/record
|
|
11
|
+
- play/record audio on a call from/to a wav file
|
|
12
12
|
- send/receive fax (T.30 only)
|
|
13
13
|
- send/receive MRCPv2 messages (TCP only, no TLS)
|
|
14
14
|
- send/receive audio using SRTP
|
|
15
|
-
-
|
|
15
|
+
- do speech synth using flite
|
|
16
|
+
- do speech recog using pocketsphinx (but only works well with sampling rate of 16000)
|
|
16
17
|
|
|
17
18
|
TODO:
|
|
18
19
|
- add support for video playing/recording from/to file
|
|
19
|
-
- add support for speech
|
|
20
|
+
- add support for speech synth/recog via websocket server to permit to access Google Speech, Whisper, Amazon Poly etc.
|
|
20
21
|
- add support for T.38 fax
|
|
21
|
-
- add support for WebSocket
|
|
22
|
+
- add support for SIP over WebSocket
|
|
22
23
|
- add support for WebRTC
|
|
23
24
|
- add support for MSRP
|
|
24
25
|
|
package/binding.gyp
CHANGED
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
"3rdParty/rapidjson/include",
|
|
18
18
|
"3rdParty/boost_1_66_0",
|
|
19
19
|
"3rdParty/spandsp/src",
|
|
20
|
+
"3rdParty/pocketsphinx/include",
|
|
21
|
+
"3rdParty/pocketsphinx/build/include",
|
|
20
22
|
"<!@(node -p \"require('node-addon-api').include\")",
|
|
21
23
|
],
|
|
22
24
|
'conditions': [
|
|
@@ -64,6 +66,7 @@
|
|
|
64
66
|
'-l pjlib-util-x86_64-unknown-linux-gnu',
|
|
65
67
|
'../3rdParty/spandsp/src/.libs/libspandsp.a',
|
|
66
68
|
'../3rdParty/bcg729/src/libbcg729.a',
|
|
69
|
+
'../3rdParty/pocketsphinx/build/libpocketsphinx.a',
|
|
67
70
|
'-lstdc++',
|
|
68
71
|
'-lopus',
|
|
69
72
|
'-lssl',
|
|
@@ -116,6 +119,7 @@
|
|
|
116
119
|
'src/pjmedia/src/pjmedia/dtmfdet.c',
|
|
117
120
|
'src/pjmedia/src/pjmedia/fax_port.c',
|
|
118
121
|
'src/pjmedia/src/pjmedia/flite_port.c',
|
|
122
|
+
'src/pjmedia/src/pjmedia/pocketsphinx_port.c',
|
|
119
123
|
],
|
|
120
124
|
},
|
|
121
125
|
],
|
package/build_deps.sh
CHANGED
|
@@ -55,7 +55,8 @@ then
|
|
|
55
55
|
#git checkout 33a3c9e0a5eb84426edef05a9aa98af17d8011c3 # required for bcg729
|
|
56
56
|
#git checkout 797088ed133c98492519b7d042b75735f6f9388c # updated as part of #21
|
|
57
57
|
#git checkout 651df5b50129b7c5a5feec8336dda4468d53d2b0 # updated to latest to see of crash issues improve
|
|
58
|
-
git checkout 043926a5846963a2c99378e8daa495230923eaab #
|
|
58
|
+
#git checkout 043926a5846963a2c99378e8daa495230923eaab # updated to try to solve #49 (but issue remains)
|
|
59
|
+
git checkout c36802585ddefb3ca477d1f6d773d179510c5412 # updated to try to solve #83 (but issue remains)
|
|
59
60
|
|
|
60
61
|
cat > user.mak <<EOF
|
|
61
62
|
export CFLAGS += -fPIC -g
|
|
@@ -81,6 +82,25 @@ then
|
|
|
81
82
|
fi
|
|
82
83
|
|
|
83
84
|
|
|
85
|
+
cd $START_DIR/3rdParty
|
|
86
|
+
if [[ ! -d pocketsphinx ]]
|
|
87
|
+
then
|
|
88
|
+
POCKETSPHINX_VERSION=5.0.3
|
|
89
|
+
rm -f v${POCKETSPHINX_VERSION}.tar.gz
|
|
90
|
+
wget https://github.com/cmusphinx/pocketsphinx/archive/refs/tags/v${POCKETSPHINX_VERSION}.tar.gz
|
|
91
|
+
tar xf v${POCKETSPHINX_VERSION}.tar.gz
|
|
92
|
+
rm -f v${POCKETSPHINX_VERSION}.tar.gz
|
|
93
|
+
mv pocketsphinx-${POCKETSPHINX_VERSION} pocketsphinx
|
|
94
|
+
cd pocketsphinx
|
|
95
|
+
sed -i '/include(GNUInstallDirs)/a \\nset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")' CMakeLists.txt
|
|
96
|
+
cmake -S . -B build
|
|
97
|
+
cmake --build build
|
|
98
|
+
|
|
99
|
+
rm -fr ../../pocketsphinx
|
|
100
|
+
mkdir -p ../../pocketsphinx
|
|
101
|
+
cp -r model/ ../../pocketsphinx/
|
|
102
|
+
fi
|
|
103
|
+
|
|
84
104
|
|
|
85
105
|
#cd $START_DIR/3rdParty
|
|
86
106
|
#if [[ ! -d openssl ]]
|
package/index.js
CHANGED
|
@@ -67,6 +67,25 @@ addon.call = {
|
|
|
67
67
|
start_fax: (c_id, params) => { return addon.call_start_fax(c_id, JSON.stringify(params)) },
|
|
68
68
|
stop_fax: (c_id, params) => { return addon.call_stop_fax(c_id, JSON.stringify(params ? params : {})) },
|
|
69
69
|
start_speech_synth: (c_id, params) => { return addon.call_start_speech_synth(c_id, JSON.stringify(params)) },
|
|
70
|
+
stop_speech_synth: (c_id, params) => { return addon.call_stop_speech_synth(c_id, JSON.stringify(params ? params : {})) },
|
|
71
|
+
|
|
72
|
+
start_speech_recog: (c_id, params) => {
|
|
73
|
+
var ps = {}
|
|
74
|
+
if(params) {
|
|
75
|
+
ps = {...params}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if(ps.model_path) {
|
|
79
|
+
process.env.POCKETSPHINX_PATH = ps.model_path
|
|
80
|
+
delete ps.model_path
|
|
81
|
+
} else {
|
|
82
|
+
process.env.POCKETSPHINX_PATH = __dirname + "/pocketsphinx/model"
|
|
83
|
+
}
|
|
84
|
+
return addon.call_start_speech_recog(c_id, JSON.stringify(ps))
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
stop_speech_recog: (c_id, params) => { return addon.call_stop_speech_recog(c_id, JSON.stringify(params ? params : {})) },
|
|
88
|
+
|
|
70
89
|
get_stream_stat: (c_id, params) => { return addon.call_get_stream_stat(c_id, JSON.stringify(params ? params : {})) },
|
|
71
90
|
//refer: (c_id, params) => { return addon.call_refer(c_id, JSON.stringify(params)) },
|
|
72
91
|
get_info: addon.call_get_info,
|
package/package.json
CHANGED