修复:语音模式下转文本模式的错误

This commit is contained in:
ifeif 2023-05-16 14:15:41 +08:00
parent 4f44094794
commit 05732f87f2

View file

@ -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)) {