feat: Add support for fetching speakers by backend from user preferences and create Aliyun documentation.
This commit is contained in:
@@ -15,6 +15,7 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/comp
|
|||||||
import { ttsApi, jobApi } from '@/lib/api'
|
import { ttsApi, jobApi } from '@/lib/api'
|
||||||
import { useJobPolling } from '@/hooks/useJobPolling'
|
import { useJobPolling } from '@/hooks/useJobPolling'
|
||||||
import { useHistoryContext } from '@/contexts/HistoryContext'
|
import { useHistoryContext } from '@/contexts/HistoryContext'
|
||||||
|
import { useUserPreferences } from '@/contexts/UserPreferencesContext'
|
||||||
import { LoadingState } from '@/components/LoadingState'
|
import { LoadingState } from '@/components/LoadingState'
|
||||||
import { AudioPlayer } from '@/components/AudioPlayer'
|
import { AudioPlayer } from '@/components/AudioPlayer'
|
||||||
import { PresetSelector } from '@/components/PresetSelector'
|
import { PresetSelector } from '@/components/PresetSelector'
|
||||||
@@ -54,6 +55,7 @@ const CustomVoiceForm = forwardRef<CustomVoiceFormHandle>((_props, ref) => {
|
|||||||
|
|
||||||
const { currentJob, isPolling, isCompleted, startPolling, elapsedTime } = useJobPolling()
|
const { currentJob, isPolling, isCompleted, startPolling, elapsedTime } = useJobPolling()
|
||||||
const { refresh } = useHistoryContext()
|
const { refresh } = useHistoryContext()
|
||||||
|
const { preferences } = useUserPreferences()
|
||||||
|
|
||||||
const {
|
const {
|
||||||
register,
|
register,
|
||||||
@@ -93,9 +95,10 @@ const CustomVoiceForm = forwardRef<CustomVoiceFormHandle>((_props, ref) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
try {
|
try {
|
||||||
|
const backend = preferences?.default_backend || 'local'
|
||||||
const [langs, spks] = await Promise.all([
|
const [langs, spks] = await Promise.all([
|
||||||
ttsApi.getLanguages(),
|
ttsApi.getLanguages(),
|
||||||
ttsApi.getSpeakers(),
|
ttsApi.getSpeakers(backend),
|
||||||
])
|
])
|
||||||
setLanguages(langs)
|
setLanguages(langs)
|
||||||
setSpeakers(spks)
|
setSpeakers(spks)
|
||||||
@@ -104,7 +107,7 @@ const CustomVoiceForm = forwardRef<CustomVoiceFormHandle>((_props, ref) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fetchData()
|
fetchData()
|
||||||
}, [])
|
}, [preferences?.default_backend])
|
||||||
|
|
||||||
|
|
||||||
const onSubmit = async (data: FormData) => {
|
const onSubmit = async (data: FormData) => {
|
||||||
|
|||||||
@@ -221,8 +221,9 @@ export const ttsApi = {
|
|||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
|
|
||||||
getSpeakers: async (): Promise<Speaker[]> => {
|
getSpeakers: async (backend?: string): Promise<Speaker[]> => {
|
||||||
const response = await apiClient.get<Speaker[]>(API_ENDPOINTS.TTS.SPEAKERS)
|
const params = backend ? { backend } : {}
|
||||||
|
const response = await apiClient.get<Speaker[]>(API_ENDPOINTS.TTS.SPEAKERS, { params })
|
||||||
return response.data.map((speaker) => ({
|
return response.data.map((speaker) => ({
|
||||||
name: speaker.name,
|
name: speaker.name,
|
||||||
description: SPEAKER_DESCRIPTIONS_ZH[speaker.name] || speaker.description,
|
description: SPEAKER_DESCRIPTIONS_ZH[speaker.name] || speaker.description,
|
||||||
|
|||||||
Reference in New Issue
Block a user