# CapsWriter-Offline **Repository Path**: vfrtgb158/CapsWriter-Offline ## Basic Information - **Project Name**: CapsWriter-Offline - **Description**: nb的语音识别库,从git导入 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-30 - **Last Updated**: 2024-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 服务端 | 运行方式 | 解压后运行 start_server.exe | | ---------- | --------------------------- | | 通信方式 | socket | | 默认端口 | 6016 | | 消息体结构 | json | ## 语音识别 | 请求 | | | | | | ------------ | ------ | -------- | ---- | ------------------------------------------------------------ | | 字段 | 类型 | 是否必填 | 默认 | 说明 | | task_id | string | 是 | | 任务ID,UUID,一段完整录音是一个单独的任务 | | seg_duration | int | 是 | | 服务端交给模型的分段长度,单位秒,值越小,服务器相应越快,值越大效果越好 | | seg_overlap | int | 是 | | 服务段交给模型的分段重叠长度,单位秒,值越大,一般效果越好,不超过seg_duration | | is_final | bool | 是 | | 是否结束,最后一个片段发送完以后必须设置成true | | time_start | double | 是 | | 录音起始时间 | | time_frame | double | 是 | | 该片段起始时间 | | source | string | 是 | | data数据类型,mic:从麦克风收到的音频数据,用于语音识别; text:文本数据,用于文字转语音 | | data | string | 是 | | 单通道16kHZ音频数据,先转为字节,再进行base64编码 | ==说明:为了加快转录速度,客户端可以把音频分片(边从mic接收数据,边分片)传给服务端,比如0.5s、0.3s,甚至0.1s等,服务端接收到后会先缓存起来,直到时长满足(seg_duration + seg_overlap*2)才会交给模型转录== 示例: {'task_id': 'd7a7959d-f584-11ee-b97e-201e8854355c', 'seg_duration': 15, 'seg_overlap': 2, 'is_final': False, 'time_start': 1712566139.7526855, 'time_frame': 1712566140.116314, 'source': 'mic', 'data': 'AAAAuAAAAAAAAIA3AAAAAAA...'} | 响应 | | | | | | ------------- | ------------ | -------- | ---- | -------------------- | | 字段 | 类型 | 是否必填 | | 说明 | | task_id | string | 是 | | 客户端提交的任务ID | | duration | int | 是 | | 总时长 | | time_start | double | 是 | | 录音起始时间 | | time_submit | double | 是 | | 服务器接收该片段时间 | | time_complete | double | 是 | | 服务器完成时间 | | tokens | list[str] | 是 | | 字列表 | | timestamps | list[double] | 是 | | 字时间列表 | | text | string | 是 | | 识别结果 | 示例 {"task_id": "d7a7959d-f584-11ee-b97e-201e8854355c", "duration": 1.3, "time_start": 1712566139.7526855, "time_submit": 1712566141.0700326, "time_complete": 1712566141.25495, "tokens": ["\u628a", "\u90a3", "\u4e2a"], "timestamps": [0.29999998211860657, 0.4599999785423279, 0.6399999856948853], "text": "\u628a\u90a3\u4e2a\u3002", "is_final": true} ## 文字转语音 | 请求 | | | | | | --------- | ------ | -------- | ---- | ------------------------------------------------------------ | | 字段 | 类型 | 是否必填 | | 说明 | | task_id | string | 是 | | 任务ID,UUID,一段完成的文本用一个单独的任务 | | source | string | 是 | | data数据类型,mic:从麦克风收到的音频数据,用于语音识别; text:文本数据,用于文字转语音 | | spiker_id | int | 否 | 0 | 说话人ID,当前支持804中, 0-803 | | data | string | 是 | | 需要转为语音的文本 | 示例 {'task_id': 'c59e47db-f610-11ee-8f7f-201e8854355c', 'source': 'text', 'spiker_id': 10, 'data': '你好啊'} | 响应 | | | | | | ------------- | ------ | -------- | ---- | ------------------------------------- | | 字段 | 类型 | 是否必填 | | 说明 | | task_id | string | 是 | | 客户端提交的任务ID | | duration | int | 是 | | 音频时长 | | time_submit | double | 是 | | 服务器接收时间 | | time_complete | double | 是 | | 服务器完成时间 | | sample_rate | int | 是 | | 采样率 | | data | string | 否 | "" | 22kHZ音频文件,先base64解码,再转为数组 | 示例 {"task_id": "017893aa-f611-11ee-b235-201e8854355c", "duration": 0.7082086167800453, "time_submit": 1712626339.5680032, "time_complete": 1712626339.7360592, "sample_rate": 22050, "data": "AAAAwAe6IT8AAAAAOYL1PgAAAOCzXyE/AAAA4FioET8AAACAsGQmPwA..."}