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://192.168.3.29:8081',
// baseUrl: 'http://10.213.6.207:19010/api', // baseUrl: 'http://10.213.6.207:19010/api',
// 语音转文字 // 语音转文字
// vioceBaseURl: 'wss://qd.zhaopinzao8dian.com/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', // 内网 vioceBaseURl: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/app/asr/connect', // 正式
// 语音合成 // 语音合成
// speechSynthesis: 'wss://qd.zhaopinzao8dian.com/api/speech-synthesis', // speechSynthesis: 'wss://qd.zhaopinzao8dian.com/api/speech-synthesis', // 测试
// speechSynthesis2: 'wss://resource.zhuoson.com/synthesis/', //直接替换即可 speechSynthesis: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/app/tts/connect', // 正式
speechSynthesis2: 'http://39.98.44.136:19527', //直接替换即可
// indexedDB // indexedDB
DBversion: 3, DBversion: 3,
// 只使用本地缓寸的数据 // 只使用本地缓寸的数据

View File

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

View File

@@ -18,12 +18,28 @@ export function useTTSPlayer() {
// 单例 Piper 实例 // 单例 Piper 实例
let piper = null 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 实例 * 获取或创建 SDK 实例
*/ */
const getPiperInstance = () => { const getPiperInstance = async () => {
if (!piper) { if (!piper) {
let baseUrl = config.speechSynthesis2 || ''
let baseUrl = await getWsUrl()
baseUrl = baseUrl.replace(/\/$/, '') baseUrl = baseUrl.replace(/\/$/, '')
piper = new PiperTTS({ piper = new PiperTTS({
@@ -61,7 +77,7 @@ export function useTTSPlayer() {
const processedText = extractSpeechText(text) const processedText = extractSpeechText(text)
if (!processedText) return if (!processedText) return
const instance = getPiperInstance() const instance = await getPiperInstance()
// 重置状态 // 重置状态
isLoading.value = true isLoading.value = true