dmed-voice-assistant 1.2.1 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +4 -2
- package/dist/recognition.js +55 -27
- package/dist/recorder.js +2 -5
- package/package.json +4 -4
package/dist/index.js
CHANGED
@@ -17,6 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
17
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
18
18
|
const VoiceAssistant = _ref => {
|
19
19
|
let {
|
20
|
+
isOnlyRecognitionMode = false,
|
20
21
|
recordListValue = [],
|
21
22
|
recognitionListValue = [],
|
22
23
|
onNewRecordEvent,
|
@@ -24,7 +25,7 @@ const VoiceAssistant = _ref => {
|
|
24
25
|
onNewRecognitionEvent,
|
25
26
|
onRecognitionDataChange
|
26
27
|
} = _ref;
|
27
|
-
const [mode, setMode] = (0, _react.useState)("recorder");
|
28
|
+
const [mode, setMode] = (0, _react.useState)(!isOnlyRecognitionMode ? "recorder" : "recognition");
|
28
29
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
29
30
|
className: "dmed-voice-assistant-class",
|
30
31
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_LocalizationProvider.LocalizationProvider, {
|
@@ -40,7 +41,8 @@ const VoiceAssistant = _ref => {
|
|
40
41
|
setMode: setMode,
|
41
42
|
recognitionHistoryList: recognitionListValue,
|
42
43
|
onNewRecognitionEvent: onNewRecognitionEvent,
|
43
|
-
onRecognitionDataChange: onRecognitionDataChange
|
44
|
+
onRecognitionDataChange: onRecognitionDataChange,
|
45
|
+
isOnlyRecognitionMode: isOnlyRecognitionMode
|
44
46
|
})]
|
45
47
|
})
|
46
48
|
});
|
package/dist/recognition.js
CHANGED
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _material = require("@mui/material");
|
10
10
|
var _svgs = require("./components/svgs");
|
11
11
|
var _RecognitionListItem = _interopRequireDefault(require("./components/RecognitionListItem"));
|
12
|
+
var _recorderJs = _interopRequireDefault(require("recorder-js"));
|
13
|
+
var _recorder = require("./recorder");
|
12
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
13
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
14
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
@@ -59,6 +61,7 @@ const StyledTypography = (0, _material.styled)(_material.Typography)(_ref3 => {
|
|
59
61
|
const Recognition = _ref4 => {
|
60
62
|
let {
|
61
63
|
mode = 'recorder',
|
64
|
+
isOnlyRecognitionMode,
|
62
65
|
recognitionHistoryList,
|
63
66
|
setMode,
|
64
67
|
onNewRecognitionEvent,
|
@@ -72,8 +75,9 @@ const Recognition = _ref4 => {
|
|
72
75
|
const [selectedVoice, setSelectedVoice] = (0, _react.useState)("");
|
73
76
|
const [voiceList, setVoiceList] = (0, _react.useState)([]);
|
74
77
|
const languageList = ['Auto-Detect', 'English', 'Chinese (Simplified)'];
|
75
|
-
const [selectedLanguage, setSelectedLanguage] = (0, _react.useState)("");
|
78
|
+
const [selectedLanguage, setSelectedLanguage] = (0, _react.useState)("en-US");
|
76
79
|
const recognitionRef = (0, _react.useRef)(null);
|
80
|
+
const mediaRecorderRef = (0, _react.useRef)(null);
|
77
81
|
const [result, setResult] = (0, _react.useState)([]);
|
78
82
|
const [historyList, setHistoryList] = (0, _react.useState)(recognitionHistoryList);
|
79
83
|
const [recordTime, setRecordTime] = (0, _react.useState)(0);
|
@@ -91,6 +95,7 @@ const Recognition = _ref4 => {
|
|
91
95
|
setAnchorEl(null);
|
92
96
|
};
|
93
97
|
const handleModeChange = () => {
|
98
|
+
if (isOnlyRecognitionMode) return;
|
94
99
|
if (mode === "recorder") {
|
95
100
|
setMode("recognition");
|
96
101
|
} else if (mode === "recognition") {
|
@@ -116,34 +121,57 @@ const Recognition = _ref4 => {
|
|
116
121
|
const handleLanguageChange = event => {
|
117
122
|
setSelectedLanguage(event.target.value);
|
118
123
|
};
|
119
|
-
const startRecording = () => {
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
124
|
+
const startRecording = async () => {
|
125
|
+
try {
|
126
|
+
if (recognitionRef.current) {
|
127
|
+
if (!mediaRecorderRef.current) {
|
128
|
+
const stream = await navigator.mediaDevices.getUserMedia({
|
129
|
+
audio: true
|
130
|
+
});
|
131
|
+
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
|
132
|
+
const newRecorder = new _recorderJs.default(audioContext);
|
133
|
+
await newRecorder.init(stream);
|
134
|
+
mediaRecorderRef.current = newRecorder;
|
135
|
+
}
|
136
|
+
mediaRecorderRef.current.start();
|
137
|
+
setResult([]);
|
138
|
+
setRecordTime(0);
|
139
|
+
const id = setInterval(async () => {
|
140
|
+
setRecordTime(prevCount => prevCount + 1);
|
141
|
+
}, 1000);
|
142
|
+
setIntervalId(id);
|
143
|
+
recognitionRef.current.start();
|
144
|
+
}
|
145
|
+
} catch (error) {
|
146
|
+
console.error("Error starting recording:", error);
|
128
147
|
}
|
129
148
|
};
|
130
149
|
const stopRecording = () => {
|
131
|
-
if (recognitionRef.current) {
|
150
|
+
if (recognitionRef.current && mediaRecorderRef.current) {
|
132
151
|
recognitionRef.current.stop();
|
133
152
|
clearInterval(intervalId);
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
153
|
+
mediaRecorderRef.current.stop().then(async _ref5 => {
|
154
|
+
let {
|
155
|
+
blob
|
156
|
+
} = _ref5;
|
157
|
+
const audioBlob = blob;
|
158
|
+
let temp = [...historyList];
|
159
|
+
const newData = {
|
160
|
+
fileName: (0, _recorder.getVoiceFileName)(new Date()),
|
161
|
+
audioBlob,
|
162
|
+
result,
|
163
|
+
lang: selectedLanguage,
|
164
|
+
date: new Date()
|
165
|
+
};
|
166
|
+
temp.push(newData);
|
167
|
+
setHistoryList(temp);
|
168
|
+
if (onNewRecognitionEvent) {
|
169
|
+
onNewRecognitionEvent(newData);
|
170
|
+
}
|
171
|
+
if (onRecognitionDataChange) {
|
172
|
+
onRecognitionDataChange(temp);
|
173
|
+
}
|
174
|
+
});
|
147
175
|
}
|
148
176
|
};
|
149
177
|
const startSpeechRecognition = () => {
|
@@ -563,13 +591,13 @@ const Recognition = _ref4 => {
|
|
563
591
|
}
|
564
592
|
},
|
565
593
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
|
566
|
-
value:
|
594
|
+
value: "en-US",
|
567
595
|
children: "Auto-Detect"
|
568
596
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
|
569
|
-
value:
|
597
|
+
value: "en-US",
|
570
598
|
children: "English"
|
571
599
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
|
572
|
-
value:
|
600
|
+
value: "zh-TW",
|
573
601
|
children: "Chinese (Simplified)"
|
574
602
|
})]
|
575
603
|
})]
|
package/dist/recorder.js
CHANGED
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
5
5
|
value: true
|
6
6
|
});
|
7
|
-
exports.default = void 0;
|
7
|
+
exports.getVoiceFileName = exports.default = void 0;
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
9
9
|
var _material = require("@mui/material");
|
10
10
|
var _Grid = _interopRequireDefault(require("@mui/material/Grid2"));
|
@@ -15,7 +15,6 @@ var _recorderJs = _interopRequireDefault(require("recorder-js"));
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
16
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
17
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
18
|
-
const apiUrl = 'https://api.origintechx.dev/qa/v1/diagnose/voice';
|
19
18
|
const getVoiceFileName = date => {
|
20
19
|
const year = date.getFullYear(); // Get the full year (YYYY)
|
21
20
|
const month = String(date.getMonth() + 1).padStart(2, '0'); // Get the month (MM), pad with leading zero if necessary
|
@@ -23,6 +22,7 @@ const getVoiceFileName = date => {
|
|
23
22
|
|
24
23
|
return `Voice${year}${month}${day}.wav`;
|
25
24
|
};
|
25
|
+
exports.getVoiceFileName = getVoiceFileName;
|
26
26
|
const getTimeValues = totalSeconds => {
|
27
27
|
const hours = Math.floor(totalSeconds / 3600); // Get hours
|
28
28
|
let minutes = Math.floor(totalSeconds % 3600 / 60); // Get minutes
|
@@ -63,7 +63,6 @@ const RecorderBox = _ref => {
|
|
63
63
|
const [isRunning, setIsRunning] = (0, _react.useState)(false);
|
64
64
|
const [intervalId, setIntervalId] = (0, _react.useState)(null);
|
65
65
|
const [audioBlob, setAudioBlob] = (0, _react.useState)(null);
|
66
|
-
const [audioUrl, setAudioUrl] = (0, _react.useState)('');
|
67
66
|
const [audioSize, setAudioSize] = (0, _react.useState)(0);
|
68
67
|
const mediaRecorderRef = (0, _react.useRef)(null);
|
69
68
|
const handleVoiceChange = event => {
|
@@ -104,8 +103,6 @@ const RecorderBox = _ref => {
|
|
104
103
|
blob
|
105
104
|
} = _ref2;
|
106
105
|
setAudioBlob(blob);
|
107
|
-
setAudioUrl(URL.createObjectURL(blob));
|
108
|
-
console.log(blob);
|
109
106
|
let temp = [...recordList];
|
110
107
|
const newVoice = {
|
111
108
|
audioURL: URL.createObjectURL(blob),
|
package/package.json
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
{
|
2
2
|
"name": "dmed-voice-assistant",
|
3
|
-
"version": "1.2.
|
3
|
+
"version": "1.2.3",
|
4
4
|
"main": "dist/index.js",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
7
7
|
],
|
8
8
|
"dependencies": {
|
9
|
-
"react": "^18.3.1",
|
10
|
-
"react-dom": "^18.3.1",
|
11
|
-
"@mui/material": "^6.3.0",
|
12
9
|
"@emotion/react": "^11.14.0",
|
13
10
|
"@emotion/styled": "^11.14.0",
|
11
|
+
"@mui/material": "^6.3.0",
|
14
12
|
"@mui/x-date-pickers": "^7.23.1",
|
15
13
|
"@testing-library/jest-dom": "^5.17.0",
|
16
14
|
"@testing-library/react": "^13.4.0",
|
17
15
|
"@testing-library/user-event": "^13.5.0",
|
18
16
|
"dayjs": "^1.11.13",
|
17
|
+
"react": "^18.3.1",
|
18
|
+
"react-dom": "^18.3.1",
|
19
19
|
"react-scripts": "5.0.1",
|
20
20
|
"recorder-js": "^1.0.7",
|
21
21
|
"web-vitals": "^2.1.4"
|