flat: 语音对接
This commit is contained in:
@@ -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,
|
||||||
// 只使用本地缓寸的数据
|
// 只使用本地缓寸的数据
|
||||||
|
|||||||
@@ -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: {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user