flat: 语音对接

This commit is contained in:
Apcallover
2025-12-22 09:28:24 +08:00
parent 1bacbe4936
commit 8cce64b005
3 changed files with 24 additions and 9 deletions

View File

@@ -4,12 +4,11 @@ export default {
// baseUrl: 'http://192.168.3.29:8081',
// baseUrl: 'http://10.213.6.207:19010/api',
// 语音转文字
// vioceBaseURl: 'wss://qd.zhaopinzao8dian.com/api/app/asr/connect', // 自定义
vioceBaseURl: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/app/asr/connect', // 内网
// vioceBaseURl: 'wss://qd.zhaopinzao8dian.com/api/app/asr/connect', // 测试
vioceBaseURl: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/app/asr/connect', // 正式
// 语音合成
// speechSynthesis: 'wss://qd.zhaopinzao8dian.com/api/speech-synthesis',
// speechSynthesis2: 'wss://resource.zhuoson.com/synthesis/', //直接替换即可
speechSynthesis2: 'http://39.98.44.136:19527', //直接替换即可
// speechSynthesis: 'wss://qd.zhaopinzao8dian.com/api/speech-synthesis', // 测试
speechSynthesis: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/app/tts/connect', // 正式
// indexedDB
DBversion: 3,
// 只使用本地缓寸的数据

View File

@@ -364,7 +364,7 @@ class PiperTTS {
this.isRecording = true;
this.onStart();
const wsUrl = this.baseUrl.replace(/^http/, 'ws') + '/ws/synthesize';
const wsUrl = this.baseUrl.replace(/^http/, 'ws');
this.worker.postMessage({
type: 'connect',
data: {

View File

@@ -18,12 +18,28 @@ export function useTTSPlayer() {
// 单例 Piper 实例
let piper = null
/**
* 获取 WebSocket 地址 (含 Token)
*/
const getWsUrl = async () => {
let wsUrl = config.speechSynthesis
// 拼接 Token
const token = uni.getStorageSync('token') || '';
if (token) {
const separator = wsUrl.includes('?') ? '&' : '?';
wsUrl = `${wsUrl}${separator}token=${encodeURIComponent(token)}`;
}
return wsUrl;
}
/**
* 获取或创建 SDK 实例
*/
const getPiperInstance = () => {
const getPiperInstance = async () => {
if (!piper) {
let baseUrl = config.speechSynthesis2 || ''
let baseUrl = await getWsUrl()
baseUrl = baseUrl.replace(/\/$/, '')
piper = new PiperTTS({
@@ -61,7 +77,7 @@ export function useTTSPlayer() {
const processedText = extractSpeechText(text)
if (!processedText) return
const instance = getPiperInstance()
const instance = await getPiperInstance()
// 重置状态
isLoading.value = true