瀏覽代碼

Fix voice selection (#2664)

Co-authored-by: luowei <glpat-EjySCyNjWiLqAED-YmwM>
Co-authored-by: crazywoola <427733928@qq.com>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
tags/0.5.8
Charlie.Wei 1 年之前
父節點
當前提交
6a6133c102
沒有連結到貢獻者的電子郵件帳戶。

+ 1
- 1
api/controllers/console/app/audio.py 查看文件

response = AudioService.transcript_tts( response = AudioService.transcript_tts(
tenant_id=app_model.tenant_id, tenant_id=app_model.tenant_id,
text=request.form['text'], text=request.form['text'],
voice=app_model.app_model_config.text_to_speech_dict.get('voice'),
voice=request.form['voice'] if request.form['voice'] else app_model.app_model_config.text_to_speech_dict.get('voice'),
streaming=False streaming=False
) )



+ 1
- 1
api/controllers/console/explore/audio.py 查看文件

response = AudioService.transcript_tts( response = AudioService.transcript_tts(
tenant_id=app_model.tenant_id, tenant_id=app_model.tenant_id,
text=request.form['text'], text=request.form['text'],
voice=app_model.app_model_config.text_to_speech_dict.get('voice'),
voice=request.form['voice'] if request.form['voice'] else app_model.app_model_config.text_to_speech_dict.get('voice'),
streaming=False streaming=False
) )
return {'data': response.data.decode('latin1')} return {'data': response.data.decode('latin1')}

+ 1
- 1
api/controllers/service_api/app/audio.py 查看文件

tenant_id=app_model.tenant_id, tenant_id=app_model.tenant_id,
text=args['text'], text=args['text'],
end_user=end_user, end_user=end_user,
voice=app_model.app_model_config.text_to_speech_dict.get('voice'),
voice=args['voice'] if args['voice'] else app_model.app_model_config.text_to_speech_dict.get('voice'),
streaming=args['streaming'] streaming=args['streaming']
) )



+ 1
- 1
api/controllers/web/audio.py 查看文件

tenant_id=app_model.tenant_id, tenant_id=app_model.tenant_id,
text=request.form['text'], text=request.form['text'],
end_user=end_user.external_user_id, end_user=end_user.external_user_id,
voice=app_model.app_model_config.text_to_speech_dict.get('voice'),
voice=request.form['voice'] if request.form['voice'] else app_model.app_model_config.text_to_speech_dict.get('voice'),
streaming=False streaming=False
) )



+ 1
- 1
api/core/model_runtime/model_providers/openai/tts/tts.py 查看文件

:return: text translated to audio file :return: text translated to audio file
""" """
audio_type = self._get_model_audio_type(model, credentials) audio_type = self._get_model_audio_type(model, credentials)
if not voice:
if not voice or voice not in [d['value'] for d in self.get_tts_model_voices(model=model, credentials=credentials)]:
voice = self._get_model_default_voice(model, credentials) voice = self._get_model_default_voice(model, credentials)
if streaming: if streaming:
return Response(stream_with_context(self._tts_invoke_streaming(model=model, return Response(stream_with_context(self._tts_invoke_streaming(model=model,

+ 1
- 1
api/core/model_runtime/model_providers/tongyi/tts/tts.py 查看文件

:return: text translated to audio file :return: text translated to audio file
""" """
audio_type = self._get_model_audio_type(model, credentials) audio_type = self._get_model_audio_type(model, credentials)
if not voice or voice not in self.get_tts_model_voices(model=model, credentials=credentials):
if not voice or voice not in [d['value'] for d in self.get_tts_model_voices(model=model, credentials=credentials)]:
voice = self._get_model_default_voice(model, credentials) voice = self._get_model_default_voice(model, credentials)
if streaming: if streaming:
return Response(stream_with_context(self._tts_invoke_streaming(model=model, return Response(stream_with_context(self._tts_invoke_streaming(model=model,

+ 1
- 0
web/app/components/app/configuration/features/chat-group/text-to-speech/index.tsx 查看文件

{ languageInfo?.example && ( { languageInfo?.example && (
<AudioBtn <AudioBtn
value={languageInfo?.example} value={languageInfo?.example}
voice={voiceItem?.value}
isAudition={true} isAudition={true}
/> />
)} )}

+ 6
- 1
web/app/components/base/audio-btn/index.tsx 查看文件



type AudioBtnProps = { type AudioBtnProps = {
value: string value: string
voice?: string
className?: string className?: string
isAudition?: boolean isAudition?: boolean
} }


const AudioBtn = ({ const AudioBtn = ({
value, value,
voice,
className, className,
isAudition, isAudition,
}: AudioBtnProps) => { }: AudioBtnProps) => {
const pathname = usePathname() const pathname = usePathname()
const removeCodeBlocks = (inputText: any) => { const removeCodeBlocks = (inputText: any) => {
const codeBlockRegex = /```[\s\S]*?```/g const codeBlockRegex = /```[\s\S]*?```/g
return inputText.replace(codeBlockRegex, '')
if (inputText)
return inputText.replace(codeBlockRegex, '')
return ''
} }


const playAudio = async () => { const playAudio = async () => {
const formData = new FormData() const formData = new FormData()
if (value !== '') { if (value !== '') {
formData.append('text', removeCodeBlocks(value)) formData.append('text', removeCodeBlocks(value))
formData.append('voice', removeCodeBlocks(voice))


let url = '' let url = ''
let isPublic = false let isPublic = false

+ 1
- 0
web/app/components/base/chat/chat/answer/operation.tsx 查看文件

{(!isOpeningStatement && config?.text_to_speech?.enabled) && ( {(!isOpeningStatement && config?.text_to_speech?.enabled) && (
<AudioBtn <AudioBtn
value={content} value={content}
voice={config?.text_to_speech?.voice}
className='hidden group-hover:block' className='hidden group-hover:block'
/> />
)} )}

Loading…
取消
儲存