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.
- oddasr-0.6.2/LICENSE +21 -0
- oddasr-0.6.2/OddAsr.egg-info/PKG-INFO +236 -0
- oddasr-0.6.2/OddAsr.egg-info/SOURCES.txt +358 -0
- oddasr-0.6.2/OddAsr.egg-info/dependency_links.txt +1 -0
- oddasr-0.6.2/OddAsr.egg-info/entry_points.txt +2 -0
- oddasr-0.6.2/OddAsr.egg-info/requires.txt +16 -0
- oddasr-0.6.2/OddAsr.egg-info/top_level.txt +4 -0
- oddasr-0.6.2/PKG-INFO +236 -0
- oddasr-0.6.2/README.md +204 -0
- oddasr-0.6.2/oddasr/README.md +318 -0
- oddasr-0.6.2/oddasr/__init__.py +3 -0
- oddasr-0.6.2/oddasr/app.py +107 -0
- oddasr-0.6.2/oddasr/auth.json +7 -0
- oddasr-0.6.2/oddasr/compile.py +129 -0
- oddasr-0.6.2/oddasr/config.json +73 -0
- 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
- oddasr-0.6.2/oddasr/docs/OddAsr.md +120 -0
- oddasr-0.6.2/oddasr/docs/oddasr.png +0 -0
- oddasr-0.6.2/oddasr/log.py +54 -0
- oddasr-0.6.2/oddasr/logic/__init__.py +0 -0
- oddasr-0.6.2/oddasr/logic/hotwords.py +181 -0
- oddasr-0.6.2/oddasr/logic/minutes.py +329 -0
- oddasr-0.6.2/oddasr/logic/odd_asr_exceptions.py +130 -0
- oddasr-0.6.2/oddasr/logic/odd_asr_file.py +218 -0
- oddasr-0.6.2/oddasr/logic/odd_asr_instance.py +60 -0
- oddasr-0.6.2/oddasr/logic/odd_asr_result.py +117 -0
- oddasr-0.6.2/oddasr/logic/odd_asr_sentence.py +217 -0
- oddasr-0.6.2/oddasr/logic/odd_asr_stream.py +653 -0
- oddasr-0.6.2/oddasr/logic/odd_slp_server.py +237 -0
- oddasr-0.6.2/oddasr/logic/odd_wss_server.py +464 -0
- oddasr-0.6.2/oddasr/logic/proto.py +280 -0
- oddasr-0.6.2/oddasr/logic/scheduled_task.py +234 -0
- oddasr-0.6.2/oddasr/logic/sensitivewords.py +77 -0
- oddasr-0.6.2/oddasr/logic/sensitivewords_opensdk.py +90 -0
- oddasr-0.6.2/oddasr/logic/users.py +38 -0
- oddasr-0.6.2/oddasr/logic/utils_speech.py +171 -0
- oddasr-0.6.2/oddasr/model/__init__.py +0 -0
- oddasr-0.6.2/oddasr/model/db.py +42 -0
- oddasr-0.6.2/oddasr/model/hotword.py +16 -0
- oddasr-0.6.2/oddasr/model/meeting.py +53 -0
- oddasr-0.6.2/oddasr/model/sensitiveword.py +23 -0
- oddasr-0.6.2/oddasr/model/text.py +34 -0
- oddasr-0.6.2/oddasr/odd_asr_app.py +42 -0
- oddasr-0.6.2/oddasr/odd_asr_config.py +110 -0
- oddasr-0.6.2/oddasr/oddasr.db +0 -0
- oddasr-0.6.2/oddasr/requirements.txt +13 -0
- oddasr-0.6.2/oddasr/router/__init__.py +0 -0
- oddasr-0.6.2/oddasr/router/asr_api.py +705 -0
- oddasr-0.6.2/oddasr/router/asr_front.py +168 -0
- oddasr-0.6.2/oddasr/router/front.py +4 -0
- oddasr-0.6.2/oddasr/router/oddasr_session.py +16 -0
- oddasr-0.6.2/oddasr/scripts/__init__.py +0 -0
- oddasr-0.6.2/oddasr/scripts/update_table.py +38 -0
- oddasr-0.6.2/oddasr/static/common/bootstrap.min.css +6 -0
- oddasr-0.6.2/oddasr/static/common/bootstrap.min.js +6 -0
- oddasr-0.6.2/oddasr/static/common/crypto-js.js +6191 -0
- oddasr-0.6.2/oddasr/static/common/css/hotwords.css +172 -0
- oddasr-0.6.2/oddasr/static/common/css/iconfont.css +7 -0
- oddasr-0.6.2/oddasr/static/common/css/images/all2.png +0 -0
- oddasr-0.6.2/oddasr/static/common/css/images/capitals-tip.png +0 -0
- oddasr-0.6.2/oddasr/static/common/css/images/myicon.png +0 -0
- oddasr-0.6.2/oddasr/static/common/css/images/setting.png +0 -0
- oddasr-0.6.2/oddasr/static/common/css/images/sprite_all.png +0 -0
- oddasr-0.6.2/oddasr/static/common/css/user_pwd.css +179 -0
- oddasr-0.6.2/oddasr/static/common/jquery.slim.min.js +2 -0
- oddasr-0.6.2/oddasr/static/common/js/hotwords.js +747 -0
- oddasr-0.6.2/oddasr/static/common/js/user_pwd.js +541 -0
- oddasr-0.6.2/oddasr/static/common/oddasr.js +622 -0
- oddasr-0.6.2/oddasr/static/common/oddrecoder.js +229 -0
- oddasr-0.6.2/oddasr/static/common/popper.min.js +5 -0
- oddasr-0.6.2/oddasr/static/common/xlsx.core.min.js +15 -0
- oddasr-0.6.2/oddasr/static/dist/css/adminlte.css +52417 -0
- oddasr-0.6.2/oddasr/static/dist/css/adminlte.min.css +11 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.components.css +12084 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.components.min.css +8 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.core.css +29556 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.core.min.css +13 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.extra-components.css +1763 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.extra-components.min.css +8 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.pages.css +968 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.pages.min.css +8 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.plugins.css +9082 -0
- oddasr-0.6.2/oddasr/static/dist/css/alt/adminlte.plugins.min.css +8 -0
- oddasr-0.6.2/oddasr/static/dist/js/FileSaver.js +188 -0
- oddasr-0.6.2/oddasr/static/dist/js/FileSaver.min.js +3 -0
- oddasr-0.6.2/oddasr/static/dist/js/adminlte.js +2959 -0
- oddasr-0.6.2/oddasr/static/dist/js/adminlte.min.js +7 -0
- oddasr-0.6.2/oddasr/static/dist/js/content.js +381 -0
- oddasr-0.6.2/oddasr/static/dist/js/demo.js +686 -0
- oddasr-0.6.2/oddasr/static/images/banner.png +0 -0
- oddasr-0.6.2/oddasr/static/images/header.png +0 -0
- oddasr-0.6.2/oddasr/static/images/progress.gif +0 -0
- oddasr-0.6.2/oddasr/static/login.html +126 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/css/bootstrap-table.min.css +10 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/css/bootstrap.min.css +7 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap-switch.min.js +767 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap-table-auto-refresh.min.js +10 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap-table.min.js +10 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.bundle.js +7045 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.bundle.min.js +7 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.js +4432 -0
- oddasr-0.6.2/oddasr/static/plugins/bootstrap/js/bootstrap.min.js +7 -0
- oddasr-0.6.2/oddasr/static/plugins/daterangepicker/daterangepicker.css +410 -0
- oddasr-0.6.2/oddasr/static/plugins/daterangepicker/daterangepicker.js +1578 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/all.css +4619 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/all.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/bootstrap-switch.css +188 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/brands.css +15 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/brands.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/fontawesome.css +4585 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/fontawesome.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/regular.css +15 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/regular.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/solid.css +16 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/solid.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/svg-with-js.css +371 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/svg-with-js.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/v4-shims.css +2172 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/css/v4-shims.min.css +5 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.svg +3717 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.ttf +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2 +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.svg +801 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.ttf +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2 +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.svg +5034 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.ttf +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff +0 -0
- oddasr-0.6.2/oddasr/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2 +0 -0
- oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.js +10881 -0
- oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.min.js +2 -0
- oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.slim.js +8782 -0
- oddasr-0.6.2/oddasr/static/plugins/jquery/jquery.slim.min.js +2 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-SG.js +79 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-au.js +79 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-ca.js +75 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-gb.js +79 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-ie.js +79 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-il.js +75 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-in.js +79 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/en-nz.js +79 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-cn.js +131 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-hk.js +112 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-mo.js +111 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locale/zh-tw.js +110 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locales.js +12429 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/locales.min.js +2 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/moment-with-locales.js +18083 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/moment-with-locales.min.js +2 -0
- oddasr-0.6.2/oddasr/static/plugins/moment/moment.min.js +2 -0
- oddasr-0.6.2/oddasr/templates/asr_file.html +228 -0
- oddasr-0.6.2/oddasr/templates/asr_live.html +412 -0
- oddasr-0.6.2/oddasr/templates/asr_sentence.html +388 -0
- oddasr-0.6.2/oddasr/templates/dialectmodal.html +141 -0
- oddasr-0.6.2/oddasr/templates/hotwords.html +195 -0
- oddasr-0.6.2/oddasr/templates/index.html +282 -0
- oddasr-0.6.2/oddasr/templates/sensiwords.html +433 -0
- oddasr-0.6.2/oddasr/templates/sensiwords_show.html +104 -0
- oddasr-0.6.2/oddasr/templates/settings_hotwords_list.html +215 -0
- oddasr-0.6.2/oddasr/templates/settings_hotwords_show.html +109 -0
- oddasr-0.6.2/oddasr/templates/settings_others.html +28 -0
- oddasr-0.6.2/oddasr/templates/slp_acoustic_model.html +215 -0
- oddasr-0.6.2/oddasr/templates/slp_language_model.html +215 -0
- oddasr-0.6.2/oddasr/templates/slp_textual_substitution.html +215 -0
- oddasr-0.6.2/oddasr/templates/user_pwd.html +169 -0
- oddasr-0.6.2/oddasr/testAPI.py +44 -0
- oddasr-0.6.2/oddasr/testLocal.py +31 -0
- oddasr-0.6.2/oddasr/testStreamAPI.py +244 -0
- oddasr-0.6.2/oddasr/testStreamLocal.py +29 -0
- oddasr-0.6.2/oddasr.db +0 -0
- oddasr-0.6.2/pyproject.toml +46 -0
- oddasr-0.6.2/setup.cfg +25 -0
- oddasr-0.6.2/tests/111.py +98 -0
- oddasr-0.6.2/tests/__init__.py +0 -0
- oddasr-0.6.2/tests/test_310b_infer.py +90 -0
- oddasr-0.6.2/tests/test_file_sql.py +56 -0
- oddasr-0.6.2/tests/test_pipeine.py +86 -0
- oddasr-0.6.2/tests/test_streaming.py +27 -0
- oddasr-0.6.2/tests/test_voiceprint_recognition.py +94 -0
- oddasr-0.6.2/tests/voice_assist/__init__.py +0 -0
- 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
|
+
[](https://github.com/oddmeta/oddagent)
|
|
47
|
+
[](https://docs.oddmeta.net/)
|
|
48
|
+
[](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 @@
|
|
|
1
|
+
|
|
@@ -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
|