提示词保存
This commit is contained in:
@@ -6,28 +6,12 @@ import type {
|
||||
TranscriptionData
|
||||
} from '@gold/config/types'
|
||||
|
||||
/**
|
||||
* API 服务接口(需要从应用层注入)
|
||||
*/
|
||||
interface ApiService {
|
||||
videoToCharacters: (data: { fileLinkList: string[] }) => Promise<{ data: string }>
|
||||
}
|
||||
|
||||
// 全局 API 服务实例(由应用层设置)
|
||||
let apiServiceInstance: ApiService | null = null
|
||||
|
||||
/**
|
||||
* 设置 API 服务实例
|
||||
* @param service - API 服务对象
|
||||
*/
|
||||
export function setApiService(service: ApiService) {
|
||||
apiServiceInstance = service
|
||||
}
|
||||
// 直接导入 TikHub 服务,无需全局注入
|
||||
import { TikHubService } from '@gold/api/services'
|
||||
|
||||
/**
|
||||
* 将音频列表转换为文本转录
|
||||
* @param list - 音频项列表
|
||||
* @param apiService - API 服务实例(可选,如果已通过 setApiService 设置则不需要)
|
||||
* @returns 转录结果数组
|
||||
* @throws 当转录过程出错时抛出错误
|
||||
*
|
||||
@@ -37,18 +21,10 @@ export function setApiService(service: ApiService) {
|
||||
* console.log(transcriptions) // [{ key: 'url', value: 'transcribed text' }]
|
||||
*/
|
||||
export async function getVoiceText(
|
||||
list: AudioItem[],
|
||||
apiService?: ApiService
|
||||
list: AudioItem[]
|
||||
): Promise<TranscriptionResult[]> {
|
||||
// 使用传入的 apiService 或全局实例
|
||||
const service = apiService || apiServiceInstance
|
||||
|
||||
if (!service) {
|
||||
throw new Error('getVoiceText: 需要提供 API 服务实例。请使用 setApiService() 设置或传入 apiService 参数')
|
||||
}
|
||||
|
||||
// 调用API将视频转换为文本
|
||||
const ret = await service.videoToCharacters({
|
||||
// 直接使用 TikHub 服务
|
||||
const ret = await TikHubService.videoToCharacters({
|
||||
fileLinkList: list.map(item => item.audio_url),
|
||||
})
|
||||
|
||||
@@ -85,28 +61,20 @@ export async function getVoiceText(
|
||||
* Hook 返回值接口
|
||||
*/
|
||||
interface UseVoiceTextReturn {
|
||||
getVoiceText: (list: AudioItem[], apiService?: ApiService) => Promise<TranscriptionResult[]>
|
||||
getVoiceText: (list: AudioItem[]) => Promise<TranscriptionResult[]>
|
||||
}
|
||||
|
||||
/**
|
||||
* 语音文本转换 Hook
|
||||
* @param apiService - API 服务实例(可选,如果已通过 setApiService 设置则不需要)
|
||||
* @returns 包含 getVoiceText 方法的对象
|
||||
*
|
||||
* @example
|
||||
* // 方式一:使用全局设置的 API 服务
|
||||
* setApiService(myApiService)
|
||||
* const { getVoiceText } = useVoiceText()
|
||||
* const result = await getVoiceText(audioList)
|
||||
*
|
||||
* @example
|
||||
* // 方式二:传入 API 服务实例
|
||||
* const { getVoiceText } = useVoiceText()
|
||||
* const result = await getVoiceText(audioList, myApiService)
|
||||
*/
|
||||
export default function useVoiceText(apiService?: ApiService): UseVoiceTextReturn {
|
||||
export default function useVoiceText(): UseVoiceTextReturn {
|
||||
return {
|
||||
getVoiceText: (list: AudioItem[]) => getVoiceText(list, apiService)
|
||||
getVoiceText
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user