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 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
  });
@@ -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
- if (recognitionRef.current) {
121
- setResult([]);
122
- setRecordTime(0);
123
- const id = setInterval(async () => {
124
- setRecordTime(prevCount => prevCount + 1);
125
- }, 1000);
126
- setIntervalId(id);
127
- recognitionRef.current.start();
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
- let temp = [...historyList];
135
- const newData = {
136
- result,
137
- date: new Date()
138
- };
139
- temp.push(newData);
140
- setHistoryList(temp);
141
- if (onNewRecognitionEvent) {
142
- onNewRecognitionEvent(newData);
143
- }
144
- if (onRecognitionDataChange) {
145
- onRecognitionDataChange(temp);
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: 0,
594
+ value: "en-US",
567
595
  children: "Auto-Detect"
568
596
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
569
- value: 1,
597
+ value: "en-US",
570
598
  children: "English"
571
599
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
572
- value: 2,
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.1",
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"