oddasr 0.6.2__tar.gz

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.
Files changed (183) hide show
  1. oddasr-0.6.2/LICENSE +21 -0
  2. oddasr-0.6.2/OddAsr.egg-info/PKG-INFO +236 -0
  3. oddasr-0.6.2/OddAsr.egg-info/SOURCES.txt +358 -0
  4. oddasr-0.6.2/OddAsr.egg-info/dependency_links.txt +1 -0
  5. oddasr-0.6.2/OddAsr.egg-info/entry_points.txt +2 -0
  6. oddasr-0.6.2/OddAsr.egg-info/requires.txt +16 -0
  7. oddasr-0.6.2/OddAsr.egg-info/top_level.txt +4 -0
  8. oddasr-0.6.2/PKG-INFO +236 -0
  9. oddasr-0.6.2/README.md +204 -0
  10. oddasr-0.6.2/oddasr/README.md +318 -0
  11. oddasr-0.6.2/oddasr/__init__.py +3 -0
  12. oddasr-0.6.2/oddasr/app.py +107 -0
  13. oddasr-0.6.2/oddasr/auth.json +7 -0
  14. oddasr-0.6.2/oddasr/compile.py +129 -0
  15. oddasr-0.6.2/oddasr/config.json +73 -0
  16. oddasr-0.6.2/oddasr/docs/20250203 /345/243/260/347/272/271/350/257/206/345/210/253/357/274/232/346/211/213/346/212/212/346/211/213/346/225/231/344/275/240/347/224/250pyannote.audio/346/235/245/345/256/236/347/216/260/345/243/260/347/272/271/350/257/206/345/210/253.md" +91 -0
  17. oddasr-0.6.2/oddasr/docs/OddAsr.md +120 -0
  18. oddasr-0.6.2/oddasr/docs/oddasr.png +0 -0
  19. oddasr-0.6.2/oddasr/log.py +54 -0
  20. oddasr-0.6.2/oddasr/logic/__init__.py +0 -0
  21. oddasr-0.6.2/oddasr/logic/hotwords.py +181 -0
  22. oddasr-0.6.2/oddasr/logic/minutes.py +329 -0
  23. oddasr-0.6.2/oddasr/logic/odd_asr_exceptions.py +130 -0
  24. oddasr-0.6.2/oddasr/logic/odd_asr_file.py +218 -0
  25. oddasr-0.6.2/oddasr/logic/odd_asr_instance.py +60 -0
  26. oddasr-0.6.2/oddasr/logic/odd_asr_result.py +117 -0
  27. oddasr-0.6.2/oddasr/logic/odd_asr_sentence.py +217 -0
  28. oddasr-0.6.2/oddasr/logic/odd_asr_stream.py +653 -0
  29. oddasr-0.6.2/oddasr/logic/odd_slp_server.py +237 -0
  30. oddasr-0.6.2/oddasr/logic/odd_wss_server.py +464 -0
  31. oddasr-0.6.2/oddasr/logic/proto.py +280 -0
  32. oddasr-0.6.2/oddasr/logic/scheduled_task.py +234 -0
  33. oddasr-0.6.2/oddasr/logic/sensitivewords.py +77 -0
  34. oddasr-0.6.2/oddasr/logic/sensitivewords_opensdk.py +90 -0
  35. oddasr-0.6.2/oddasr/logic/users.py +38 -0
  36. oddasr-0.6.2/oddasr/logic/utils_speech.py +171 -0
  37. oddasr-0.6.2/oddasr/model/__init__.py +0 -0
  38. oddasr-0.6.2/oddasr/model/db.py +42 -0
  39. oddasr-0.6.2/oddasr/model/hotword.py +16 -0
  40. oddasr-0.6.2/oddasr/model/meeting.py +53 -0
  41. oddasr-0.6.2/oddasr/model/sensitiveword.py +23 -0
  42. oddasr-0.6.2/oddasr/model/text.py +34 -0
  43. oddasr-0.6.2/oddasr/odd_asr_app.py +42 -0
  44. oddasr-0.6.2/oddasr/odd_asr_config.py +110 -0
  45. oddasr-0.6.2/oddasr/oddasr.db +0 -0
  46. oddasr-0.6.2/oddasr/requirements.txt +13 -0
  47. oddasr-0.6.2/oddasr/router/__init__.py +0 -0
  48. oddasr-0.6.2/oddasr/router/asr_api.py +705 -0
  49. oddasr-0.6.2/oddasr/router/asr_front.py +168 -0
  50. oddasr-0.6.2/oddasr/router/front.py +4 -0
  51. oddasr-0.6.2/oddasr/router/oddasr_session.py +16 -0
  52. oddasr-0.6.2/oddasr/scripts/__init__.py +0 -0
  53. oddasr-0.6.2/oddasr/scripts/update_table.py +38 -0
  54. oddasr-0.6.2/oddasr/static/common/bootstrap.min.css +6 -0
  55. oddasr-0.6.2/oddasr/static/common/bootstrap.min.js +6 -0
  56. oddasr-0.6.2/oddasr/static/common/crypto-js.js +6191 -0
  57. oddasr-0.6.2/oddasr/static/common/css/hotwords.css +172 -0
  58. oddasr-0.6.2/oddasr/static/common/css/iconfont.css +7 -0
  59. oddasr-0.6.2/oddasr/static/common/css/images/all2.png +0 -0
  60. oddasr-0.6.2/oddasr/static/common/css/images/capitals-tip.png +0 -0
  61. oddasr-0.6.2/oddasr/static/common/css/images/myicon.png +0 -0
  62. oddasr-0.6.2/oddasr/static/common/css/images/setting.png +0 -0
  63. oddasr-0.6.2/oddasr/static/common/css/images/sprite_all.png +0 -0
  64. oddasr-0.6.2/oddasr/static/common/css/user_pwd.css +179 -0
  65. oddasr-0.6.2/oddasr/static/common/jquery.slim.min.js +2 -0
  66. oddasr-0.6.2/oddasr/static/common/js/hotwords.js +747 -0
  67. oddasr-0.6.2/oddasr/static/common/js/user_pwd.js +541 -0
  68. oddasr-0.6.2/oddasr/static/common/oddasr.js +622 -0
  69. oddasr-0.6.2/oddasr/static/common/oddrecoder.js +229 -0
  70. oddasr-0.6.2/oddasr/static/common/popper.min.js +5 -0
  71. oddasr-0.6.2/oddasr/static/common/xlsx.core.min.js +15 -0
  72. oddasr-0.6.2/oddasr/static/dist/css/adminlte.css +52417 -0
  73. oddasr-0.6.2/oddasr/static/dist/css/adminlte.min.css +11 -0
  74. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.components.css +12084 -0
  75. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.components.min.css +8 -0
  76. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.core.css +29556 -0
  77. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.core.min.css +13 -0
  78. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.extra-components.css +1763 -0
  79. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.extra-components.min.css +8 -0
  80. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.pages.css +968 -0
  81. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.pages.min.css +8 -0
  82. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.plugins.css +9082 -0
  83. oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.plugins.min.css +8 -0
  84. oddasr-0.6.2/oddasr/static/dist/js/FileSaver.js +188 -0
  85. oddasr-0.6.2/oddasr/static/dist/js/FileSaver.min.js +3 -0
  86. oddasr-0.6.2/oddasr/static/dist/js/adminlte.js +2959 -0
  87. oddasr-0.6.2/oddasr/static/dist/js/adminlte.min.js +7 -0
  88. oddasr-0.6.2/oddasr/static/dist/js/content.js +381 -0
  89. oddasr-0.6.2/oddasr/static/dist/js/demo.js +686 -0
  90. oddasr-0.6.2/oddasr/static/images/banner.png +0 -0
  91. oddasr-0.6.2/oddasr/static/images/header.png +0 -0
  92. oddasr-0.6.2/oddasr/static/images/progress.gif +0 -0
  93. oddasr-0.6.2/oddasr/static/login.html +126 -0
  94. oddasr-0.6.2/oddasr/static/plugins/bootstrap/css/bootstrap-table.min.css +10 -0
  95. oddasr-0.6.2/oddasr/static/plugins/bootstrap/css/bootstrap.min.css +7 -0
  96. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap-switch.min.js +767 -0
  97. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap-table-auto-refresh.min.js +10 -0
  98. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap-table.min.js +10 -0
  99. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.bundle.js +7045 -0
  100. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.bundle.min.js +7 -0
  101. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.js +4432 -0
  102. oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.min.js +7 -0
  103. oddasr-0.6.2/oddasr/static/plugins/daterangepicker/daterangepicker.css +410 -0
  104. oddasr-0.6.2/oddasr/static/plugins/daterangepicker/daterangepicker.js +1578 -0
  105. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/all.css +4619 -0
  106. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/all.min.css +5 -0
  107. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/bootstrap-switch.css +188 -0
  108. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/brands.css +15 -0
  109. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/brands.min.css +5 -0
  110. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/fontawesome.css +4585 -0
  111. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/fontawesome.min.css +5 -0
  112. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/regular.css +15 -0
  113. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/regular.min.css +5 -0
  114. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/solid.css +16 -0
  115. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/solid.min.css +5 -0
  116. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/svg-with-js.css +371 -0
  117. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/svg-with-js.min.css +5 -0
  118. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/v4-shims.css +2172 -0
  119. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/v4-shims.min.css +5 -0
  120. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.svg +3717 -0
  121. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.ttf +0 -0
  122. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff +0 -0
  123. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2 +0 -0
  124. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.svg +801 -0
  125. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.ttf +0 -0
  126. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff +0 -0
  127. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2 +0 -0
  128. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.svg +5034 -0
  129. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.ttf +0 -0
  130. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff +0 -0
  131. oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2 +0 -0
  132. oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.js +10881 -0
  133. oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.min.js +2 -0
  134. oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.slim.js +8782 -0
  135. oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.slim.min.js +2 -0
  136. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-SG.js +79 -0
  137. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-au.js +79 -0
  138. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-ca.js +75 -0
  139. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-gb.js +79 -0
  140. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-ie.js +79 -0
  141. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-il.js +75 -0
  142. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-in.js +79 -0
  143. oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-nz.js +79 -0
  144. oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-cn.js +131 -0
  145. oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-hk.js +112 -0
  146. oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-mo.js +111 -0
  147. oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-tw.js +110 -0
  148. oddasr-0.6.2/oddasr/static/plugins/moment/locales.js +12429 -0
  149. oddasr-0.6.2/oddasr/static/plugins/moment/locales.min.js +2 -0
  150. oddasr-0.6.2/oddasr/static/plugins/moment/moment-with-locales.js +18083 -0
  151. oddasr-0.6.2/oddasr/static/plugins/moment/moment-with-locales.min.js +2 -0
  152. oddasr-0.6.2/oddasr/static/plugins/moment/moment.min.js +2 -0
  153. oddasr-0.6.2/oddasr/templates/asr_file.html +228 -0
  154. oddasr-0.6.2/oddasr/templates/asr_live.html +412 -0
  155. oddasr-0.6.2/oddasr/templates/asr_sentence.html +388 -0
  156. oddasr-0.6.2/oddasr/templates/dialectmodal.html +141 -0
  157. oddasr-0.6.2/oddasr/templates/hotwords.html +195 -0
  158. oddasr-0.6.2/oddasr/templates/index.html +282 -0
  159. oddasr-0.6.2/oddasr/templates/sensiwords.html +433 -0
  160. oddasr-0.6.2/oddasr/templates/sensiwords_show.html +104 -0
  161. oddasr-0.6.2/oddasr/templates/settings_hotwords_list.html +215 -0
  162. oddasr-0.6.2/oddasr/templates/settings_hotwords_show.html +109 -0
  163. oddasr-0.6.2/oddasr/templates/settings_others.html +28 -0
  164. oddasr-0.6.2/oddasr/templates/slp_acoustic_model.html +215 -0
  165. oddasr-0.6.2/oddasr/templates/slp_language_model.html +215 -0
  166. oddasr-0.6.2/oddasr/templates/slp_textual_substitution.html +215 -0
  167. oddasr-0.6.2/oddasr/templates/user_pwd.html +169 -0
  168. oddasr-0.6.2/oddasr/testAPI.py +44 -0
  169. oddasr-0.6.2/oddasr/testLocal.py +31 -0
  170. oddasr-0.6.2/oddasr/testStreamAPI.py +244 -0
  171. oddasr-0.6.2/oddasr/testStreamLocal.py +29 -0
  172. oddasr-0.6.2/oddasr.db +0 -0
  173. oddasr-0.6.2/pyproject.toml +46 -0
  174. oddasr-0.6.2/setup.cfg +25 -0
  175. oddasr-0.6.2/tests/111.py +98 -0
  176. oddasr-0.6.2/tests/__init__.py +0 -0
  177. oddasr-0.6.2/tests/test_310b_infer.py +90 -0
  178. oddasr-0.6.2/tests/test_file_sql.py +56 -0
  179. oddasr-0.6.2/tests/test_pipeine.py +86 -0
  180. oddasr-0.6.2/tests/test_streaming.py +27 -0
  181. oddasr-0.6.2/tests/test_voiceprint_recognition.py +94 -0
  182. oddasr-0.6.2/tests/voice_assist/__init__.py +0 -0
  183. oddasr-0.6.2/tests/voice_assist/test_voice_assist.py +318 -0
oddasr-0.6.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) [year] [your name]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,236 @@
1
+ Metadata-Version: 2.4
2
+ Name: oddasr
3
+ Version: 0.6.2
4
+ Summary: An ASR API server for FunASR
5
+ Author-email: Catherine Wei <catherine@oddmeta.com>, Jacky Wei <jacky@oddmeta.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://oddmeta.net/oddasr
8
+ Project-URL: Repository, https://github.com/oddmeta/oddasr
9
+ Project-URL: Issues, https://github.com/oddmeta/oddasr/issues
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.10
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: Flask==3.1.1
16
+ Requires-Dist: funasr==1.3.0
17
+ Requires-Dist: librosa==0.11.0
18
+ Requires-Dist: torch==2.7.0
19
+ Requires-Dist: torchaudio==2.7.0
20
+ Requires-Dist: addict==2.4.0
21
+ Requires-Dist: modelscope==1.9.5
22
+ Requires-Dist: datasets==2.12.0
23
+ Requires-Dist: requests==2.31.0
24
+ Requires-Dist: Werkzeug==3.1.3
25
+ Requires-Dist: flask_cors==4.0.1
26
+ Requires-Dist: python-dotenv==1.0.0
27
+ Requires-Dist: websockets==15.0.1
28
+ Requires-Dist: mutagen==1.47.0
29
+ Requires-Dist: sqlalchemy==2.0.25
30
+ Requires-Dist: redis==5.0.1
31
+ Dynamic: license-file
32
+
33
+ **Read this in other languages: [English](README.en.md), [中文](README.md).**
34
+
35
+ # OddAgent:轻松手搓一个你自己的“小艺”、“小爱同学”
36
+
37
+ [TOC]
38
+
39
+ 想自己动手来手搓一个完全属于你自己的“小爱同学”、“小艺”吗?如果有你这么一个想法,而又不知道该如何开始的话,那么OddAgent项目可以成为你非常容易上手的开源项目。
40
+
41
+ 本来这个功能是[小落同学](https://x.oddmeta.net "小落同学")在去年就已经支持,由于前两天公司老板说需要做一个基于LLM的智能助手系统,因此就先从[小落同学](https://x.oddmeta.net "小落同学")项目里把相关的代码摘了一下出来,单独搞了一个OddAgent项目出来,作为一个基于LLM的智能助手系统,提供多轮问答、流式AI聊天等功能独立项目来演进。
42
+
43
+ <div align="center">
44
+ <img src="static/images/OddAgent_400x200.png" alt="OddAgent Logo" width="400">
45
+
46
+ [![GitHub Stars](https://img.shields.io/github/stars/oddmeta/oddagent.svg?style=social)](https://github.com/oddmeta/oddagent)
47
+ [![Documentation](https://img.shields.io/badge/Documentation-Online-green.svg)](https://docs.oddmeta.net/)
48
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
49
+ </div>
50
+
51
+ ## 一、功能特性
52
+
53
+ ### 1. OddAgent框架特性
54
+ - 支持多轮对话
55
+ - 支持流式AI聊天接口
56
+ - 工具模板化处理
57
+ - 支持语音对话(需要自行部署 [OddAsr项目](https://github.com/oddmeta/oddasr "OddAsr项目"),并在`odd_agent_config.py`中将OddAsr部署的IP地址指向OddAsr所在的服务器)
58
+
59
+ [OddAsr项目](https://github.com/oddmeta/oddasr "OddAsr项目")位于:https://github.com/oddmeta/oddasr ,若需要语音的支持,请自行部署。
60
+
61
+ ### 2. 示例功能介绍
62
+ 根据视频会议的功能特性,在示例中实现了如下的助手功能:
63
+ 1. 预约会议服务,可创建指定时间、地点的会议。
64
+ 2. 创建会议服务。
65
+ 3. 结束会议服务。
66
+ 4. 加入会议服务,可加入指定会议。
67
+ 5. 退出会议服务。
68
+ 6. 邀请参会人服务,可邀请指定会议的参会人。
69
+ 7. 挂断参会人服务,可挂断指定会议的参会人。
70
+ 8. 打开摄像头服务。
71
+ 9. 关闭摄像头服务。
72
+ 10. 打开麦克风服务。
73
+ 11. 关闭麦克风服务。
74
+ 12. 发送双流服务。
75
+ 13. 停止双流服务。
76
+ 14. 打开同声字幕服务。
77
+ 15. 打开会议纪要服务。
78
+ 16. 关闭会议纪要服务。
79
+ 17. 密码重置,提交手机号和身份证号。
80
+
81
+
82
+ ## 二、快速开始
83
+
84
+ ### 1. 环境要求
85
+
86
+ - Python 3.10+
87
+
88
+ 注:启动服务时自动检查依赖,并自动安装,最简单的使用方式:`python app.py`
89
+
90
+ ### 2. 配置
91
+
92
+ 修改 `odd_agent_config.py` 文件中的配置参数:
93
+
94
+ ```python
95
+ # 调试模式
96
+ DEBUG = True
97
+
98
+ # LLM 模型参数
99
+ GPT_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions'
100
+ MODEL = 'qwen3-30b-a3b-instruct-2507'
101
+ API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
102
+ SYSTEM_PROMPT = 'You are a helpful assistant.'
103
+
104
+ # Flask 配置
105
+ BACKEND_HOST = 'localhost'
106
+ BACKEND_PORT = 5050
107
+
108
+ # 其他配置...
109
+ ```
110
+
111
+ ### 3. 启动服务
112
+
113
+ 若是 Windows 环境,执行 `start.bat`
114
+ 若是 Linux/Mac 环境,执行
115
+ ```bash
116
+ chmod +x start.sh
117
+ ./start.sh
118
+ ```
119
+
120
+ 或者直接运行:
121
+ ```bash
122
+ python app.py
123
+ ```
124
+
125
+ 服务启动后,访问 http://localhost:5050 查看界面。
126
+
127
+ ## 三、项目结构
128
+
129
+ ```
130
+ ├── app.py # 应用主入口
131
+ ├── odd_agent_config.py # 配置文件
132
+ ├── odd_agent_logger.py # 日志配置
133
+ ├── logic/ # 业务逻辑
134
+ │ ├── init.py # 模块初始化
135
+ │ ├── api_request_composer.py # API请求构建器
136
+ │ ├── api_response_paser.py # API响应解析器
137
+ │ └── odd_agent.py # 核心Agent实现
138
+ ├── tools/ # 工具处理模块
139
+ │ ├── init.py # 模块初始化
140
+ │ ├── tool_template_utils.py # 工具模板工具
141
+ │ ├── tool_executer.py # 工具执行器接口
142
+ │ ├── tool_executer_impl.py # 工具执行器实现
143
+ │ ├── tool_processor.py # 工具处理器接口
144
+ │ ├── tool_processor_impl.py # 工具处理器实现
145
+ │ ├── tool_prompts.py # 工具提示模板
146
+ │ └── tool_datetime_utils.py # 日期时间工具
147
+ ├── router/ # API路由
148
+ │ ├── init.py # 模块初始化
149
+ │ ├── tools_api.py # 工具API接口
150
+ │ └── tools_front.py # 前端路由
151
+ ├── modules/ # 场景配置模块
152
+ │ ├── catherine/ # Catherine场景
153
+ │ │ └── cc.json # 场景配置文件
154
+ │ └── xiaoluo/ # 小落场景
155
+ │ └── xiaoluo.json # 场景配置文件
156
+ ├── static/ # 静态资源
157
+ │ ├── bootstrap.min.css # Bootstrap CSS
158
+ │ ├── bootstrap.min.js # Bootstrap JS
159
+ │ ├── common/ # 通用脚本
160
+ │ │ ├── oddagent.js # Agent客户端
161
+ │ │ ├── oddasr.js # ASR客户端
162
+ │ │ └── oddrecoder.js # 录音工具
163
+ │ ├── dist/ # 编译后的资源
164
+ │ ├── images/ # 图片资源
165
+ │ └── plugins/ # 第三方插件
166
+ ├── templates/ # HTML模板
167
+ │ └── index.html # 主页面
168
+ ├── log/ # 日志文件目录
169
+ │ └── odd_agent.log # 日志文件
170
+ ├── requirements.txt # 依赖清单
171
+ ├── start.bat # Windows启动脚本
172
+ └── start.sh # Linux/Mac启动脚本
173
+ ```
174
+
175
+
176
+ ## 四、工具模板配置
177
+
178
+ 项目支持通过JSON文件配置不同的工具模板,配置文件位于`modules/`目录下。
179
+
180
+ 在agent_tool_list字段下面,将你要实现的功能一个个加进去:
181
+ - `tool_name`: 工具名。建议可以是实际这个工具在实现时需要调用的API的名字。
182
+ - `name`: 详细工具名。一个实际的、用户要以看在懂的名字。
183
+ - `description`: 工具具体介绍。
184
+ - `example`: 可选。如果这个工具是需要带调用参数的,建议在这里具体介绍一下,这里的介绍是会带在prompt提示词里送给大模型,让大模型来更清楚明白的了解这个工具所对应的意图(intent),以及更准确的去解析出此工具对应的slot(槽位)。
185
+ - `parameters`: 可选。如果这个工具是需要带调用参数的,所有的参数需要在这里列示一下。同example一样,这里的内容也是会在prompt里带给大模型的,以便大模型更精准的解析意图及槽位。
186
+ - `enabled`: 启用与否
187
+ - `tool_api_url`: 识别出工具意图后,实际实现该工具所需要调用的API的地址。
188
+ - `tool_api_headers`: 调用工具API时,需要在API的头信息里带的参数列表。
189
+ - `tool_api_method`: 调用工具API时,使用的方法(method),比如:GET/POST/PUT等。
190
+
191
+ 以下是一个示例配置
192
+ ```json
193
+ {
194
+ "global_variants": [],
195
+ "agent_tool_list": [],
196
+ {
197
+ "tool_name": "meeting_schedule",
198
+ "name": "预约会议",
199
+ "description": "预约会议服务,可创建指定时间、地点的会议。",
200
+ "example": "JSON:[{'name': 'time', 'desc': '会议时间,格式为yyyy-MM-dd HH:mm:ss', 'value': ''}, {'name': 'place', 'desc': '会议地点', 'value': ''} ]\n输入:帮我预约一个2046年4月18日10:00:00在北京的会议\n答:{ 'time': '2046-04-18 10:00:00', 'place': '北京' }",
201
+ "parameters": [
202
+ {"name": "time", "desc": "会议时间,格式为yyyy-MM-dd HH:mm:ss", "type": "string", "required": false},
203
+ {"name": "place", "desc": "会议地点", "type": "string", "required": false}
204
+ ],
205
+ "enabled": true,
206
+ "tool_api_url": "https://api.oddmeta.net/api/meeting_schedule",
207
+ "tool_api_headers": "{'Content-Type': 'application/json', 'Authorization': '{{ api_key }}'}",
208
+ "tool_api_method": "POST"
209
+ }
210
+ ]
211
+ }
212
+ ```
213
+
214
+ ## 五、其它信息
215
+
216
+ ### 1. 注意事项
217
+
218
+ - 配置LLM:确保API_KEY配置正确,否则无法调用LLM服务
219
+ - 工具模板配置:可根据您自己的需要自行配置相对应的意图工具
220
+ - 语音支持
221
+ - 若需要语音支持,可自行下载安装部署 [OddAsr项目](https://github.com/oddmeta/oddasr "OddAsr项目")
222
+ - OddAsr部署好后,修改`odd_agent_config.py`,并修改其中的ODD_ASR_URL地址为你自己的地址,比如: 'http://172.16.237.141:9002'
223
+ - 工具模板配置及API调用:在[小落同学](https://x.oddmeta.net "小落同学")里所有的后台API都是自己封装的,API的名字通常就是 工具配置里的 tool_name,但是如果一个工具需调用第三方的API来实现实际功能时,API的地址(url)、头(headers)、方法(Method)以及参数通常千奇百怪,因此整个工具模板配置的结构相比于[小落同学](https://x.oddmeta.net "小落同学")项目有了一些改动,并且单独出一个处理API请求的类(`api_request_composer.py`)和一个API响应的类(`api_request_composer.py`),在[OddAgent项目](https://github.com/oddmeta/oddagent "OddAgent项目")里,每个工具相关的业务都需在这两个类里由用户自行实现。
224
+ - 语音识别优化:如果使用了OddAsr来让OddAgent支持语音交互的话,需要将一些名词(如:人名、会议名、会议室名、参会成员列表等)以热词的方式加入的OddAsr的请求的API里,以让语音转写功能更加准确。
225
+ - 生产环境注意事项:
226
+ - 开发环境建议设置`DEBUG=True`,生产环境建议设置为False
227
+ - 会话数据当前存储在内存中,生产环境建议使用Redis或数据库
228
+
229
+ ### 2. 待完成功能
230
+
231
+ 在视频会议业务的部分命令里可能会存在slot内容需二次确认的场景,比如:邀请 xxx,而 xxx 这个名字可能存在多个相近的账号,此时需要在业务流程中加入一个中断,将查询到的多个 xxx 先返回给前端,让用户自己来选择要邀请的是第几个xxx。
232
+
233
+ ### 3. 开源地址
234
+
235
+ ⭐️ [GitHub](https://github.com/oddmeta/oddagent)
236
+ 📖 [文档](https://docs.oddmeta.net/)
@@ -0,0 +1,358 @@
1
+ LICENSE
2
+ README.md
3
+ oddasr.db
4
+ pyproject.toml
5
+ setup.cfg
6
+ ./oddasr/README.md
7
+ ./oddasr/__init__.py
8
+ ./oddasr/app.py
9
+ ./oddasr/auth.json
10
+ ./oddasr/compile.py
11
+ ./oddasr/config.json
12
+ ./oddasr/log.py
13
+ ./oddasr/odd_asr_app.py
14
+ ./oddasr/odd_asr_config.py
15
+ ./oddasr/oddasr.db
16
+ ./oddasr/requirements.txt
17
+ ./oddasr/testAPI.py
18
+ ./oddasr/testLocal.py
19
+ ./oddasr/testStreamAPI.py
20
+ ./oddasr/testStreamLocal.py
21
+ ./oddasr/docs/20250203 声纹识别:手把手教你用pyannote.audio来实现声纹识别.md
22
+ ./oddasr/docs/OddAsr.md
23
+ ./oddasr/docs/oddasr.png
24
+ ./oddasr/logic/__init__.py
25
+ ./oddasr/logic/hotwords.py
26
+ ./oddasr/logic/minutes.py
27
+ ./oddasr/logic/odd_asr_exceptions.py
28
+ ./oddasr/logic/odd_asr_file.py
29
+ ./oddasr/logic/odd_asr_instance.py
30
+ ./oddasr/logic/odd_asr_result.py
31
+ ./oddasr/logic/odd_asr_sentence.py
32
+ ./oddasr/logic/odd_asr_stream.py
33
+ ./oddasr/logic/odd_slp_server.py
34
+ ./oddasr/logic/odd_wss_server.py
35
+ ./oddasr/logic/proto.py
36
+ ./oddasr/logic/scheduled_task.py
37
+ ./oddasr/logic/sensitivewords.py
38
+ ./oddasr/logic/sensitivewords_opensdk.py
39
+ ./oddasr/logic/users.py
40
+ ./oddasr/logic/utils_speech.py
41
+ ./oddasr/model/__init__.py
42
+ ./oddasr/model/db.py
43
+ ./oddasr/model/hotword.py
44
+ ./oddasr/model/meeting.py
45
+ ./oddasr/model/sensitiveword.py
46
+ ./oddasr/model/text.py
47
+ ./oddasr/router/__init__.py
48
+ ./oddasr/router/asr_api.py
49
+ ./oddasr/router/asr_front.py
50
+ ./oddasr/router/front.py
51
+ ./oddasr/router/oddasr_session.py
52
+ ./oddasr/scripts/__init__.py
53
+ ./oddasr/scripts/update_table.py
54
+ ./oddasr/static/login.html
55
+ ./oddasr/static/common/bootstrap.min.css
56
+ ./oddasr/static/common/bootstrap.min.js
57
+ ./oddasr/static/common/crypto-js.js
58
+ ./oddasr/static/common/jquery.slim.min.js
59
+ ./oddasr/static/common/oddasr.js
60
+ ./oddasr/static/common/oddrecoder.js
61
+ ./oddasr/static/common/popper.min.js
62
+ ./oddasr/static/common/xlsx.core.min.js
63
+ ./oddasr/static/common/css/hotwords.css
64
+ ./oddasr/static/common/css/iconfont.css
65
+ ./oddasr/static/common/css/user_pwd.css
66
+ ./oddasr/static/common/css/images/all2.png
67
+ ./oddasr/static/common/css/images/capitals-tip.png
68
+ ./oddasr/static/common/css/images/myicon.png
69
+ ./oddasr/static/common/css/images/setting.png
70
+ ./oddasr/static/common/css/images/sprite_all.png
71
+ ./oddasr/static/common/js/hotwords.js
72
+ ./oddasr/static/common/js/user_pwd.js
73
+ ./oddasr/static/dist/css/adminlte.css
74
+ ./oddasr/static/dist/css/adminlte.min.css
75
+ ./oddasr/static/dist/css/alt/adminlte.components.css
76
+ ./oddasr/static/dist/css/alt/adminlte.components.min.css
77
+ ./oddasr/static/dist/css/alt/adminlte.core.css
78
+ ./oddasr/static/dist/css/alt/adminlte.core.min.css
79
+ ./oddasr/static/dist/css/alt/adminlte.extra-components.css
80
+ ./oddasr/static/dist/css/alt/adminlte.extra-components.min.css
81
+ ./oddasr/static/dist/css/alt/adminlte.pages.css
82
+ ./oddasr/static/dist/css/alt/adminlte.pages.min.css
83
+ ./oddasr/static/dist/css/alt/adminlte.plugins.css
84
+ ./oddasr/static/dist/css/alt/adminlte.plugins.min.css
85
+ ./oddasr/static/dist/js/FileSaver.js
86
+ ./oddasr/static/dist/js/FileSaver.min.js
87
+ ./oddasr/static/dist/js/adminlte.js
88
+ ./oddasr/static/dist/js/adminlte.min.js
89
+ ./oddasr/static/dist/js/content.js
90
+ ./oddasr/static/dist/js/demo.js
91
+ ./oddasr/static/images/banner.png
92
+ ./oddasr/static/images/header.png
93
+ ./oddasr/static/images/progress.gif
94
+ ./oddasr/static/plugins/bootstrap/css/bootstrap-table.min.css
95
+ ./oddasr/static/plugins/bootstrap/css/bootstrap.min.css
96
+ ./oddasr/static/plugins/bootstrap/js/bootstrap-switch.min.js
97
+ ./oddasr/static/plugins/bootstrap/js/bootstrap-table-auto-refresh.min.js
98
+ ./oddasr/static/plugins/bootstrap/js/bootstrap-table.min.js
99
+ ./oddasr/static/plugins/bootstrap/js/bootstrap.bundle.js
100
+ ./oddasr/static/plugins/bootstrap/js/bootstrap.bundle.min.js
101
+ ./oddasr/static/plugins/bootstrap/js/bootstrap.js
102
+ ./oddasr/static/plugins/bootstrap/js/bootstrap.min.js
103
+ ./oddasr/static/plugins/daterangepicker/daterangepicker.css
104
+ ./oddasr/static/plugins/daterangepicker/daterangepicker.js
105
+ ./oddasr/static/plugins/fontawesome-free/css/all.css
106
+ ./oddasr/static/plugins/fontawesome-free/css/all.min.css
107
+ ./oddasr/static/plugins/fontawesome-free/css/bootstrap-switch.css
108
+ ./oddasr/static/plugins/fontawesome-free/css/brands.css
109
+ ./oddasr/static/plugins/fontawesome-free/css/brands.min.css
110
+ ./oddasr/static/plugins/fontawesome-free/css/fontawesome.css
111
+ ./oddasr/static/plugins/fontawesome-free/css/fontawesome.min.css
112
+ ./oddasr/static/plugins/fontawesome-free/css/regular.css
113
+ ./oddasr/static/plugins/fontawesome-free/css/regular.min.css
114
+ ./oddasr/static/plugins/fontawesome-free/css/solid.css
115
+ ./oddasr/static/plugins/fontawesome-free/css/solid.min.css
116
+ ./oddasr/static/plugins/fontawesome-free/css/svg-with-js.css
117
+ ./oddasr/static/plugins/fontawesome-free/css/svg-with-js.min.css
118
+ ./oddasr/static/plugins/fontawesome-free/css/v4-shims.css
119
+ ./oddasr/static/plugins/fontawesome-free/css/v4-shims.min.css
120
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.svg
121
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.ttf
122
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff
123
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
124
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.svg
125
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.ttf
126
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff
127
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
128
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.svg
129
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.ttf
130
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff
131
+ ./oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
132
+ ./oddasr/static/plugins/jquery/jquery.js
133
+ ./oddasr/static/plugins/jquery/jquery.min.js
134
+ ./oddasr/static/plugins/jquery/jquery.slim.js
135
+ ./oddasr/static/plugins/jquery/jquery.slim.min.js
136
+ ./oddasr/static/plugins/moment/locales.js
137
+ ./oddasr/static/plugins/moment/locales.min.js
138
+ ./oddasr/static/plugins/moment/moment-with-locales.js
139
+ ./oddasr/static/plugins/moment/moment-with-locales.min.js
140
+ ./oddasr/static/plugins/moment/moment.min.js
141
+ ./oddasr/static/plugins/moment/locale/en-SG.js
142
+ ./oddasr/static/plugins/moment/locale/en-au.js
143
+ ./oddasr/static/plugins/moment/locale/en-ca.js
144
+ ./oddasr/static/plugins/moment/locale/en-gb.js
145
+ ./oddasr/static/plugins/moment/locale/en-ie.js
146
+ ./oddasr/static/plugins/moment/locale/en-il.js
147
+ ./oddasr/static/plugins/moment/locale/en-in.js
148
+ ./oddasr/static/plugins/moment/locale/en-nz.js
149
+ ./oddasr/static/plugins/moment/locale/zh-cn.js
150
+ ./oddasr/static/plugins/moment/locale/zh-hk.js
151
+ ./oddasr/static/plugins/moment/locale/zh-mo.js
152
+ ./oddasr/static/plugins/moment/locale/zh-tw.js
153
+ ./oddasr/templates/asr_file.html
154
+ ./oddasr/templates/asr_live.html
155
+ ./oddasr/templates/asr_sentence.html
156
+ ./oddasr/templates/dialectmodal.html
157
+ ./oddasr/templates/hotwords.html
158
+ ./oddasr/templates/index.html
159
+ ./oddasr/templates/sensiwords.html
160
+ ./oddasr/templates/sensiwords_show.html
161
+ ./oddasr/templates/settings_hotwords_list.html
162
+ ./oddasr/templates/settings_hotwords_show.html
163
+ ./oddasr/templates/settings_others.html
164
+ ./oddasr/templates/slp_acoustic_model.html
165
+ ./oddasr/templates/slp_language_model.html
166
+ ./oddasr/templates/slp_textual_substitution.html
167
+ ./oddasr/templates/user_pwd.html
168
+ ./tests/111.py
169
+ ./tests/__init__.py
170
+ ./tests/test_310b_infer.py
171
+ ./tests/test_file_sql.py
172
+ ./tests/test_pipeine.py
173
+ ./tests/test_streaming.py
174
+ ./tests/test_voiceprint_recognition.py
175
+ ./tests/voice_assist/__init__.py
176
+ ./tests/voice_assist/test_voice_assist.py
177
+ OddAsr.egg-info/PKG-INFO
178
+ OddAsr.egg-info/SOURCES.txt
179
+ OddAsr.egg-info/dependency_links.txt
180
+ OddAsr.egg-info/requires.txt
181
+ OddAsr.egg-info/top_level.txt
182
+ oddasr/README.md
183
+ oddasr/__init__.py
184
+ oddasr/app.py
185
+ oddasr/auth.json
186
+ oddasr/compile.py
187
+ oddasr/config.json
188
+ oddasr/log.py
189
+ oddasr/odd_asr_app.py
190
+ oddasr/odd_asr_config.py
191
+ oddasr/oddasr.db
192
+ oddasr/requirements.txt
193
+ oddasr/testAPI.py
194
+ oddasr/testLocal.py
195
+ oddasr/testStreamAPI.py
196
+ oddasr/testStreamLocal.py
197
+ oddasr.egg-info/PKG-INFO
198
+ oddasr.egg-info/SOURCES.txt
199
+ oddasr.egg-info/dependency_links.txt
200
+ oddasr.egg-info/entry_points.txt
201
+ oddasr.egg-info/requires.txt
202
+ oddasr.egg-info/top_level.txt
203
+ oddasr/docs/20250203 声纹识别:手把手教你用pyannote.audio来实现声纹识别.md
204
+ oddasr/docs/OddAsr.md
205
+ oddasr/docs/oddasr.png
206
+ oddasr/logic/__init__.py
207
+ oddasr/logic/hotwords.py
208
+ oddasr/logic/minutes.py
209
+ oddasr/logic/odd_asr_exceptions.py
210
+ oddasr/logic/odd_asr_file.py
211
+ oddasr/logic/odd_asr_instance.py
212
+ oddasr/logic/odd_asr_result.py
213
+ oddasr/logic/odd_asr_sentence.py
214
+ oddasr/logic/odd_asr_stream.py
215
+ oddasr/logic/odd_slp_server.py
216
+ oddasr/logic/odd_wss_server.py
217
+ oddasr/logic/proto.py
218
+ oddasr/logic/scheduled_task.py
219
+ oddasr/logic/sensitivewords.py
220
+ oddasr/logic/sensitivewords_opensdk.py
221
+ oddasr/logic/users.py
222
+ oddasr/logic/utils_speech.py
223
+ oddasr/model/__init__.py
224
+ oddasr/model/db.py
225
+ oddasr/model/hotword.py
226
+ oddasr/model/meeting.py
227
+ oddasr/model/sensitiveword.py
228
+ oddasr/model/text.py
229
+ oddasr/router/__init__.py
230
+ oddasr/router/asr_api.py
231
+ oddasr/router/asr_front.py
232
+ oddasr/router/front.py
233
+ oddasr/router/oddasr_session.py
234
+ oddasr/scripts/__init__.py
235
+ oddasr/scripts/update_table.py
236
+ oddasr/static/login.html
237
+ oddasr/static/common/bootstrap.min.css
238
+ oddasr/static/common/bootstrap.min.js
239
+ oddasr/static/common/crypto-js.js
240
+ oddasr/static/common/jquery.slim.min.js
241
+ oddasr/static/common/oddasr.js
242
+ oddasr/static/common/oddrecoder.js
243
+ oddasr/static/common/popper.min.js
244
+ oddasr/static/common/xlsx.core.min.js
245
+ oddasr/static/common/css/hotwords.css
246
+ oddasr/static/common/css/iconfont.css
247
+ oddasr/static/common/css/user_pwd.css
248
+ oddasr/static/common/css/images/all2.png
249
+ oddasr/static/common/css/images/capitals-tip.png
250
+ oddasr/static/common/css/images/myicon.png
251
+ oddasr/static/common/css/images/setting.png
252
+ oddasr/static/common/css/images/sprite_all.png
253
+ oddasr/static/common/js/hotwords.js
254
+ oddasr/static/common/js/user_pwd.js
255
+ oddasr/static/dist/css/adminlte.css
256
+ oddasr/static/dist/css/adminlte.min.css
257
+ oddasr/static/dist/css/alt/adminlte.components.css
258
+ oddasr/static/dist/css/alt/adminlte.components.min.css
259
+ oddasr/static/dist/css/alt/adminlte.core.css
260
+ oddasr/static/dist/css/alt/adminlte.core.min.css
261
+ oddasr/static/dist/css/alt/adminlte.extra-components.css
262
+ oddasr/static/dist/css/alt/adminlte.extra-components.min.css
263
+ oddasr/static/dist/css/alt/adminlte.pages.css
264
+ oddasr/static/dist/css/alt/adminlte.pages.min.css
265
+ oddasr/static/dist/css/alt/adminlte.plugins.css
266
+ oddasr/static/dist/css/alt/adminlte.plugins.min.css
267
+ oddasr/static/dist/js/FileSaver.js
268
+ oddasr/static/dist/js/FileSaver.min.js
269
+ oddasr/static/dist/js/adminlte.js
270
+ oddasr/static/dist/js/adminlte.min.js
271
+ oddasr/static/dist/js/content.js
272
+ oddasr/static/dist/js/demo.js
273
+ oddasr/static/images/banner.png
274
+ oddasr/static/images/header.png
275
+ oddasr/static/images/progress.gif
276
+ oddasr/static/plugins/bootstrap/css/bootstrap-table.min.css
277
+ oddasr/static/plugins/bootstrap/css/bootstrap.min.css
278
+ oddasr/static/plugins/bootstrap/js/bootstrap-switch.min.js
279
+ oddasr/static/plugins/bootstrap/js/bootstrap-table-auto-refresh.min.js
280
+ oddasr/static/plugins/bootstrap/js/bootstrap-table.min.js
281
+ oddasr/static/plugins/bootstrap/js/bootstrap.bundle.js
282
+ oddasr/static/plugins/bootstrap/js/bootstrap.bundle.min.js
283
+ oddasr/static/plugins/bootstrap/js/bootstrap.js
284
+ oddasr/static/plugins/bootstrap/js/bootstrap.min.js
285
+ oddasr/static/plugins/daterangepicker/daterangepicker.css
286
+ oddasr/static/plugins/daterangepicker/daterangepicker.js
287
+ oddasr/static/plugins/fontawesome-free/css/all.css
288
+ oddasr/static/plugins/fontawesome-free/css/all.min.css
289
+ oddasr/static/plugins/fontawesome-free/css/bootstrap-switch.css
290
+ oddasr/static/plugins/fontawesome-free/css/brands.css
291
+ oddasr/static/plugins/fontawesome-free/css/brands.min.css
292
+ oddasr/static/plugins/fontawesome-free/css/fontawesome.css
293
+ oddasr/static/plugins/fontawesome-free/css/fontawesome.min.css
294
+ oddasr/static/plugins/fontawesome-free/css/regular.css
295
+ oddasr/static/plugins/fontawesome-free/css/regular.min.css
296
+ oddasr/static/plugins/fontawesome-free/css/solid.css
297
+ oddasr/static/plugins/fontawesome-free/css/solid.min.css
298
+ oddasr/static/plugins/fontawesome-free/css/svg-with-js.css
299
+ oddasr/static/plugins/fontawesome-free/css/svg-with-js.min.css
300
+ oddasr/static/plugins/fontawesome-free/css/v4-shims.css
301
+ oddasr/static/plugins/fontawesome-free/css/v4-shims.min.css
302
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.svg
303
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.ttf
304
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff
305
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
306
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.svg
307
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.ttf
308
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff
309
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
310
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.svg
311
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.ttf
312
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff
313
+ oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
314
+ oddasr/static/plugins/jquery/jquery.js
315
+ oddasr/static/plugins/jquery/jquery.min.js
316
+ oddasr/static/plugins/jquery/jquery.slim.js
317
+ oddasr/static/plugins/jquery/jquery.slim.min.js
318
+ oddasr/static/plugins/moment/locales.js
319
+ oddasr/static/plugins/moment/locales.min.js
320
+ oddasr/static/plugins/moment/moment-with-locales.js
321
+ oddasr/static/plugins/moment/moment-with-locales.min.js
322
+ oddasr/static/plugins/moment/moment.min.js
323
+ oddasr/static/plugins/moment/locale/en-SG.js
324
+ oddasr/static/plugins/moment/locale/en-au.js
325
+ oddasr/static/plugins/moment/locale/en-ca.js
326
+ oddasr/static/plugins/moment/locale/en-gb.js
327
+ oddasr/static/plugins/moment/locale/en-ie.js
328
+ oddasr/static/plugins/moment/locale/en-il.js
329
+ oddasr/static/plugins/moment/locale/en-in.js
330
+ oddasr/static/plugins/moment/locale/en-nz.js
331
+ oddasr/static/plugins/moment/locale/zh-cn.js
332
+ oddasr/static/plugins/moment/locale/zh-hk.js
333
+ oddasr/static/plugins/moment/locale/zh-mo.js
334
+ oddasr/static/plugins/moment/locale/zh-tw.js
335
+ oddasr/templates/asr_file.html
336
+ oddasr/templates/asr_live.html
337
+ oddasr/templates/asr_sentence.html
338
+ oddasr/templates/dialectmodal.html
339
+ oddasr/templates/hotwords.html
340
+ oddasr/templates/index.html
341
+ oddasr/templates/sensiwords.html
342
+ oddasr/templates/sensiwords_show.html
343
+ oddasr/templates/settings_hotwords_list.html
344
+ oddasr/templates/settings_hotwords_show.html
345
+ oddasr/templates/settings_others.html
346
+ oddasr/templates/slp_acoustic_model.html
347
+ oddasr/templates/slp_language_model.html
348
+ oddasr/templates/slp_textual_substitution.html
349
+ oddasr/templates/user_pwd.html
350
+ tests/111.py
351
+ tests/__init__.py
352
+ tests/test_310b_infer.py
353
+ tests/test_file_sql.py
354
+ tests/test_pipeine.py
355
+ tests/test_streaming.py
356
+ tests/test_voiceprint_recognition.py
357
+ tests/voice_assist/__init__.py
358
+ tests/voice_assist/test_voice_assist.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ oddasr = oddasr.app:main
@@ -0,0 +1,16 @@
1
+ Flask==3.1.1
2
+ funasr==1.3.0
3
+ librosa==0.11.0
4
+ torch==2.7.0
5
+ torchaudio==2.7.0
6
+ addict==2.4.0
7
+ modelscope==1.9.5
8
+ datasets==2.12.0
9
+ requests==2.31.0
10
+ Werkzeug==3.1.3
11
+ flask_cors==4.0.1
12
+ python-dotenv==1.0.0
13
+ websockets==15.0.1
14
+ mutagen==1.47.0
15
+ sqlalchemy==2.0.25
16
+ redis==5.0.1
@@ -0,0 +1,4 @@
1
+ dist
2
+ logs
3
+ oddasr
4
+ tests