mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-17 13:57:10 +00:00
修复:语音模式下转文本模式的错误
This commit is contained in:
parent
4f44094794
commit
05732f87f2
1 changed files with 54 additions and 52 deletions
106
apps/chat.js
106
apps/chat.js
|
|
@ -1156,69 +1156,71 @@ export class chatgpt extends plugin {
|
||||||
this.reply(`建议的回复:\n${chatMessage.suggestedResponses}`)
|
this.reply(`建议的回复:\n${chatMessage.suggestedResponses}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let wav
|
if(ttsResponse.length <= Config.ttsAutoFallbackThreshold) {
|
||||||
if (Config.ttsMode === 'vits-uma-genshin-honkai' && Config.ttsSpace && ttsResponse.length <= Config.ttsAutoFallbackThreshold) {
|
let wav
|
||||||
if (Config.autoJapanese && (_.isEmpty(Config.baiduTranslateAppId) || _.isEmpty(Config.baiduTranslateSecret))) {
|
if (Config.ttsMode === 'vits-uma-genshin-honkai' && Config.ttsSpace) {
|
||||||
await this.reply('请检查翻译配置是否正确。')
|
if (Config.autoJapanese && (_.isEmpty(Config.baiduTranslateAppId) || _.isEmpty(Config.baiduTranslateSecret))) {
|
||||||
return false
|
await this.reply('请检查翻译配置是否正确。')
|
||||||
}
|
return false
|
||||||
if (Config.autoJapanese) {
|
}
|
||||||
|
if (Config.autoJapanese) {
|
||||||
|
try {
|
||||||
|
const translate = new Translate({
|
||||||
|
appid: Config.baiduTranslateAppId,
|
||||||
|
secret: Config.baiduTranslateSecret
|
||||||
|
})
|
||||||
|
ttsResponse = await translate(ttsResponse, '日')
|
||||||
|
} catch (err) {
|
||||||
|
logger.error(err)
|
||||||
|
await this.reply(err.message + '\n将使用原始文本合成语音...')
|
||||||
|
}
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const translate = new Translate({
|
wav = await generateAudio(ttsResponse, speaker, '中日混合(中文用[ZH][ZH]包裹起来,日文用[JA][JA]包裹起来)')
|
||||||
appid: Config.baiduTranslateAppId,
|
|
||||||
secret: Config.baiduTranslateSecret
|
|
||||||
})
|
|
||||||
ttsResponse = await translate(ttsResponse, '日')
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(err)
|
logger.error(err)
|
||||||
await this.reply(err.message + '\n将使用原始文本合成语音...')
|
await this.reply('合成语音发生错误~')
|
||||||
}
|
}
|
||||||
|
} else if (Config.ttsMode === 'azure' && Config.azureTTSKey) {
|
||||||
|
let ssml = AzureTTS.generateSsml(ttsResponse, {
|
||||||
|
speaker,
|
||||||
|
emotion,
|
||||||
|
emotionDegree
|
||||||
|
})
|
||||||
|
wav = await AzureTTS.generateAudio(ttsResponse, {
|
||||||
|
speaker
|
||||||
|
}, await ssml)
|
||||||
|
} else if (Config.ttsMode === 'voicevox' && Config.voicevoxSpace) {
|
||||||
|
wav = await VoiceVoxTTS.generateAudio(ttsResponse, {
|
||||||
|
speaker
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
await this.reply('你没有配置转语音API哦')
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
wav = await generateAudio(ttsResponse, speaker, '中日混合(中文用[ZH][ZH]包裹起来,日文用[JA][JA]包裹起来)')
|
try {
|
||||||
} catch (err) {
|
let sendable = await uploadRecord(wav, Config.ttsMode)
|
||||||
logger.error(err)
|
if (sendable) {
|
||||||
await this.reply('合成语音发生错误~')
|
await e.reply(sendable)
|
||||||
}
|
} else {
|
||||||
} else if (Config.ttsMode === 'azure' && Config.azureTTSKey) {
|
// 如果合成失败,尝试使用ffmpeg合成
|
||||||
let ssml = AzureTTS.generateSsml(ttsResponse, {
|
await e.reply(segment.record(wav))
|
||||||
speaker,
|
}
|
||||||
emotion,
|
} catch (err) {
|
||||||
emotionDegree
|
logger.error(err)
|
||||||
})
|
|
||||||
wav = await AzureTTS.generateAudio(ttsResponse, {
|
|
||||||
speaker
|
|
||||||
}, await ssml)
|
|
||||||
} else if (Config.ttsMode === 'voicevox' && Config.voicevoxSpace) {
|
|
||||||
wav = await VoiceVoxTTS.generateAudio(ttsResponse, {
|
|
||||||
speaker
|
|
||||||
})
|
|
||||||
} else if (!Config.ttsSpace && !Config.azureTTSKey && !Config.voicevoxSpace) {
|
|
||||||
await this.reply('你没有配置转语音API哦')
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
try {
|
|
||||||
let sendable = await uploadRecord(wav, Config.ttsMode)
|
|
||||||
if (sendable) {
|
|
||||||
await e.reply(sendable)
|
|
||||||
} else {
|
|
||||||
// 如果合成失败,尝试使用ffmpeg合成
|
|
||||||
await e.reply(segment.record(wav))
|
await e.reply(segment.record(wav))
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(err)
|
logger.error(err)
|
||||||
await e.reply(segment.record(wav))
|
await this.reply('合成语音发生错误~')
|
||||||
}
|
}
|
||||||
} catch (err) {
|
if (Config.ttsMode === 'azure' && Config.azureTTSKey) {
|
||||||
logger.error(err)
|
// 清理文件
|
||||||
await this.reply('合成语音发生错误~')
|
try {
|
||||||
}
|
fs.unlinkSync(wav)
|
||||||
if (Config.ttsMode === 'azure' && Config.azureTTSKey) {
|
} catch (err) {
|
||||||
// 清理文件
|
logger.warn(err)
|
||||||
try {
|
}
|
||||||
fs.unlinkSync(wav)
|
|
||||||
} catch (err) {
|
|
||||||
logger.warn(err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (userSetting.usePicture || (Config.autoUsePicture && response.length > Config.autoUsePictureThreshold)) {
|
} else if (userSetting.usePicture || (Config.autoUsePicture && response.length > Config.autoUsePictureThreshold)) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue