FC-DEV-FinalProject / final-fe-team4

4조 프론트엔드 깃허브
0 stars 2 forks source link

[feat] vc api연동, concat 개선 #253

Closed dhkim511 closed 22 hours ago

dhkim511 commented 23 hours ago

vc api연동, concat 개선

Sourcery에 의한 요약

음성 변환을 위한 VC API를 통합하고 오디오 파일 및 무음 설정의 개선된 처리를 통해 Concat 기능을 향상시킵니다. 새로운 기능을 지원하고 오디오 항목 관리를 위한 사용자 인터페이스를 개선하기 위해 구성 요소를 리팩토링합니다.

새로운 기능:

개선 사항:

Original summary in English ## Summary by Sourcery Integrate VC API for voice conversion and enhance the Concat feature with improved handling of audio files and silence settings. Refactor components to support new functionalities and improve the user interface for managing audio items. New Features: - Introduce a new Concat feature for handling audio file concatenation with silence settings. - Add support for voice conversion with target voice selection and application to selected items. Enhancements: - Improve the VC store by adding new actions for handling items and audio playback. - Refactor the TableListView component to support different row types for TTS, VC, and Concat.
sourcery-ai[bot] commented 23 hours ago

리뷰어 가이드 by Sourcery

이 풀 리퀘스트는 음성 변환(VC) API 통합을 구현하고 연결 기능을 개선합니다. 변경 사항에는 VC 저장소의 주요 리팩토링, VC 및 연결 기능을 처리하기 위한 새로운 구성 요소 추가, 오디오 플레이어 및 UI 구성 요소의 개선이 포함됩니다.

handleVoiceConversion 프로세스의 시퀀스 다이어그램

sequenceDiagram
    participant User
    participant VCStore
    participant API
    User->>VCStore: 음성 및 항목 선택
    User->>VCStore: handleVoiceConversion 트리거
    VCStore->>API: 변환 요청 전송
    API-->>VCStore: 변환 결과 반환
    VCStore->>User: 변환 결과로 항목 업데이트
    VCStore->>User: 성공 또는 오류 알림 표시

VCStore 변경 사항의 클래스 다이어그램

classDiagram
    class VCStore {
        +VCItem[] items
        +string selectedVoice
        +ProjectData projectData
        +Alert alert
        +AudioPlayer audioPlayer
        +number memberId
        +setItems(items: VCItem[] | (prev: VCItem[]) => VCItem[])
        +addItems(newItems: VCItem[])
        +updateItem(id: string, updates: Partial<VCItem>)
        +deleteSelectedItems()
        +toggleSelection(id: string)
        +toggleSelectAll()
        +setSelectedVoice(voice: string)
        +showAlert(message: string, variant: string)
        +hideAlert()
        +setProjectData(data: ProjectData)
        +updateProjectName(name: string)
        +setCurrentPlayingId(id: string)
        +handleAdd()
        +handleFileUpload(files: FileList | null)
        +handleTextChange(id: string, newText: string)
        +handlePlay(id: string)
        +handlePause()
        +cleanupAudioUrl(id: string)
        +cleanupAllAudioUrls()
        +applyToSelected()
    }

ConcatStore의 클래스 다이어그램

classDiagram
    class ConcatStore {
        +ConcatItem[] items
        +AudioPlayer audioPlayer
        +SilenceSettings silenceSettings
        +boolean isModified
        +setItems(items: ConcatItem[])
        +toggleSelection(id: string)
        +toggleSelectAll()
        +deleteSelectedItems()
        +handleAdd()
        +handleTextChange(id: string, text: string)
        +handlePlay(id: string)
        +handlePause()
        +setCurrentPlayingId(id: string | null)
        +showAlert(message: string, variant: string)
        +setSilenceSettings(settings: SilenceSettings)
        +applySilenceToSelected()
        +reset()
    }
    class ConcatItem {
        +string id
        +string text
        +boolean isSelected
        +string fileName
        +string audioUrl
        +File file
        +string status
        +number frontSilence
        +number backSilence
        +number endSilence
    }
    class AudioPlayer {
        +HTMLAudioElement audioElement
        +string currentPlayingId
    }
    class SilenceSettings {
        +number fileSilence
        +number frontSilence
        +number backSilence
    }

파일 수준 변경 사항

변경 사항 세부 사항 파일
상태 관리 개선 및 새로운 기능을 갖춘 VC 저장소 리팩토링
  • 저장소 상태에 memberId 추가
  • 함수 기반 업데이트를 처리하기 위해 setItems 업데이트
  • 음성 변환을 위한 applyToSelected 액션 추가
  • URL 정리로 오디오 플레이어 처리 개선
  • 오류 처리 및 알림 시스템 강화
src/stores/vc.store.ts
음성 변환 및 연결 기능을 처리하기 위한 새로운 구성 요소 생성
  • 음성 변환 목록 항목을 위한 VCListRow 구성 요소 추가
  • 연결 목록 항목을 위한 ConcatListRow 구성 요소 생성
  • 텍스트-음성 변환 목록 항목을 위한 TTSListRow 구성 요소 구현
  • 오디오 무음 시각화를 위한 SilenceStatus 구성 요소 추가
src/components/custom/tables/project/vc/VCListRow.tsx
src/components/custom/tables/project/concat/ConcatListRow.tsx
src/components/custom/tables/project/tts/TTSListRow.tsx
src/components/custom/features/concat/SilenceStatus.tsx
음성 변환 및 오디오 처리를 위한 새로운 훅 구현
  • VC API 통합을 위한 useVoiceConversion 훅 생성
  • 오디오 파일 업로드 처리를 위한 useConcatUpload 훅 추가
  • 파일 다운로드를 위한 useAudioDownload 훅 구현
src/hooks/useVoiceConversion.ts
src/hooks/useConcatUpload.ts
src/hooks/useAudioDownload.ts
UI 구성 요소 및 레이아웃 업데이트
  • 드래그 앤 드롭 기능이 개선된 TableListView 리팩토링
  • 새로운 열 레이아웃으로 TableHeader 업데이트
  • 새로운 스타일링 및 아이콘으로 알림 구성 요소 수정
  • 새로운 옵션 및 컨트롤로 사이드바 구성 요소 개선
src/components/custom/tables/project/common/TableListView.tsx
src/components/custom/tables/project/common/TableHeader.tsx
src/components/ui/alert.tsx
src/components/section/sidebar/VCSidebar.tsx
src/components/section/sidebar/ConcatSidebar.tsx

팁 및 명령어 #### Sourcery와 상호작용하기 - **새로운 리뷰 트리거:** 풀 리퀘스트에 `@sourcery-ai review`라고 댓글을 남깁니다. - **토론 계속하기:** Sourcery의 리뷰 댓글에 직접 답장합니다. - **리뷰 댓글에서 GitHub 이슈 생성:** 리뷰 댓글에서 이슈를 생성하도록 Sourcery에 요청합니다. - **풀 리퀘스트 제목 생성:** 풀 리퀘스트 제목 어디에나 `@sourcery-ai`를 작성하여 언제든지 제목을 생성합니다. - **풀 리퀘스트 요약 생성:** 풀 리퀘스트 본문 어디에나 `@sourcery-ai summary`를 작성하여 언제든지 PR 요약을 생성합니다. 이 명령어를 사용하여 요약이 삽입될 위치를 지정할 수도 있습니다. #### 경험 맞춤화하기 [대시보드](https://app.sourcery.ai)에 액세스하여: - Sourcery가 생성한 풀 리퀘스트 요약, 리뷰어 가이드 등과 같은 리뷰 기능을 활성화하거나 비활성화합니다. - 리뷰 언어를 변경합니다. - 사용자 정의 리뷰 지침을 추가, 제거 또는 편집합니다. - 기타 리뷰 설정을 조정합니다. #### 도움 받기 - 질문이나 피드백이 있는 경우 [지원 팀에 문의](mailto:support@sourcery.ai)하세요. - 자세한 가이드와 정보를 보려면 [문서](https://docs.sourcery.ai)를 방문하세요. - [X/Twitter](https://x.com/SourceryAI), [LinkedIn](https://www.linkedin.com/company/sourcery-ai/) 또는 [GitHub](https://github.com/sourcery-ai)에서 Sourcery 팀을 팔로우하여 소식을 받아보세요.
Original review guide in English ## Reviewer's Guide by Sourcery This pull request implements voice conversion (VC) API integration and improves concatenation functionality. The changes include a major refactoring of the VC store, addition of new components for handling VC and concatenation features, and improvements to the audio player and UI components. #### Sequence diagram for handleVoiceConversion process ```mermaid sequenceDiagram participant User participant VCStore participant API User->>VCStore: Select voice and items User->>VCStore: Trigger handleVoiceConversion VCStore->>API: Send conversion request API-->>VCStore: Return conversion result VCStore->>User: Update items with conversion result VCStore->>User: Show success or error alert ``` #### Class diagram for VCStore changes ```mermaid classDiagram class VCStore { +VCItem[] items +string selectedVoice +ProjectData projectData +Alert alert +AudioPlayer audioPlayer +number memberId +setItems(items: VCItem[] | (prev: VCItem[]) => VCItem[]) +addItems(newItems: VCItem[]) +updateItem(id: string, updates: Partial) +deleteSelectedItems() +toggleSelection(id: string) +toggleSelectAll() +setSelectedVoice(voice: string) +showAlert(message: string, variant: string) +hideAlert() +setProjectData(data: ProjectData) +updateProjectName(name: string) +setCurrentPlayingId(id: string) +handleAdd() +handleFileUpload(files: FileList | null) +handleTextChange(id: string, newText: string) +handlePlay(id: string) +handlePause() +cleanupAudioUrl(id: string) +cleanupAllAudioUrls() +applyToSelected() } ``` #### Class diagram for ConcatStore ```mermaid classDiagram class ConcatStore { +ConcatItem[] items +AudioPlayer audioPlayer +SilenceSettings silenceSettings +boolean isModified +setItems(items: ConcatItem[]) +toggleSelection(id: string) +toggleSelectAll() +deleteSelectedItems() +handleAdd() +handleTextChange(id: string, text: string) +handlePlay(id: string) +handlePause() +setCurrentPlayingId(id: string | null) +showAlert(message: string, variant: string) +setSilenceSettings(settings: SilenceSettings) +applySilenceToSelected() +reset() } class ConcatItem { +string id +string text +boolean isSelected +string fileName +string audioUrl +File file +string status +number frontSilence +number backSilence +number endSilence } class AudioPlayer { +HTMLAudioElement audioElement +string currentPlayingId } class SilenceSettings { +number fileSilence +number frontSilence +number backSilence } ``` ### File-Level Changes | Change | Details | Files | | ------ | ------- | ----- | | Refactored VC store with improved state management and new functionality |
  • Added memberId to store state
  • Updated setItems to handle function-based updates
  • Added applyToSelected action for voice conversion
  • Improved audio player handling with URL cleanup
  • Enhanced error handling and alert system
| `src/stores/vc.store.ts` | | Created new components for handling voice conversion and concatenation features |
  • Added VCListRow component for voice conversion list items
  • Created ConcatListRow component for concatenation list items
  • Implemented TTSListRow component for text-to-speech list items
  • Added SilenceStatus component for audio silence visualization
| `src/components/custom/tables/project/vc/VCListRow.tsx`
`src/components/custom/tables/project/concat/ConcatListRow.tsx`
`src/components/custom/tables/project/tts/TTSListRow.tsx`
`src/components/custom/features/concat/SilenceStatus.tsx` | | Implemented new hooks for voice conversion and audio handling |
  • Created useVoiceConversion hook for VC API integration
  • Added useConcatUpload hook for handling audio file uploads
  • Implemented useAudioDownload hook for file downloads
| `src/hooks/useVoiceConversion.ts`
`src/hooks/useConcatUpload.ts`
`src/hooks/useAudioDownload.ts` | | Updated UI components and layouts |
  • Refactored TableListView with improved drag-and-drop functionality
  • Updated TableHeader with new column layouts
  • Modified alert component with new styling and icons
  • Improved sidebar components with new options and controls
| `src/components/custom/tables/project/common/TableListView.tsx`
`src/components/custom/tables/project/common/TableHeader.tsx`
`src/components/ui/alert.tsx`
`src/components/section/sidebar/VCSidebar.tsx`
`src/components/section/sidebar/ConcatSidebar.tsx` | ---
Tips and commands #### Interacting with Sourcery - **Trigger a new review:** Comment `@sourcery-ai review` on the pull request. - **Continue discussions:** Reply directly to Sourcery's review comments. - **Generate a GitHub issue from a review comment:** Ask Sourcery to create an issue from a review comment by replying to it. - **Generate a pull request title:** Write `@sourcery-ai` anywhere in the pull request title to generate a title at any time. - **Generate a pull request summary:** Write `@sourcery-ai summary` anywhere in the pull request body to generate a PR summary at any time. You can also use this command to specify where the summary should be inserted. #### Customizing Your Experience Access your [dashboard](https://app.sourcery.ai) to: - Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others. - Change the review language. - Add, remove or edit custom review instructions. - Adjust other review settings. #### Getting Help - [Contact our support team](mailto:support@sourcery.ai) for questions or feedback. - Visit our [documentation](https://docs.sourcery.ai) for detailed guides and information. - Keep in touch with the Sourcery team by following us on [X/Twitter](https://x.com/SourceryAI), [LinkedIn](https://www.linkedin.com/company/sourcery-ai/) or [GitHub](https://github.com/sourcery-ai).
github-actions[bot] commented 22 hours ago

Visit the preview URL for this PR (updated for commit ce3aafb):

https://aipark-four-t--253-20elkx9e.web.app

(expires Sat, 07 Dec 2024 01:46:43 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 0a4b3ef6ecc2c695a6a0d6ade46651e032870a9f