Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Audio #88

Closed
wants to merge 166 commits into from
Closed

Audio #88

wants to merge 166 commits into from

Conversation

yuncheol-AHN
Copy link
Collaborator

#️⃣ 연관된 이슈


⏰ 작업 시간

예상 시간 실제 걸린 시간
3.5 10+

저는 왕 감자 입니다. 🥔🥔🥔

📝 작업 내용

  • 오디오 세션 열기
  • 세션을 통해 전달 받은 decibels을 meteringLevel로 변환
  • 음성 데이터 FileManager를 통해 저장

📸 스크린샷

ScreenRecording_11-27-2024.21-03-56_1.MP4

📒 리뷰 노트

  • AVAudioSession을 통해 오디오세션을 실행(active)
  • AVAudioRecorder를 통해 음성(데시벨)을 전달받는다.
  • 데시벨은 (-0 ~ -160)까지의 값이고 -0이 큰 소리 -160이 무음이다. 이 때, AVAudioRecorder가 STOP 상태에서는 -160 값으로 유지되는데 일단 RECORD되면 웬만큼 조용하지 않아서는 -60보다 작은 값으로 잘 안내려간다.
  • 데시벨 값은 직관적인 파형으로 다가오지 않아서 튜닝(decibel -> metering level)을 조금 해줬습니다.
  • AudioViewController를 생성할 때 생성된 UUID을 File Name으로하고 음성 파일 저장
  • 취소 버튼을 누르면 해당 경로에 있는 오디오 파일 제거 (AVAudioRecorder를 Stop할 때 자동으로 파일이 저장되서 취소 버튼을 눌렀을 때 해당 파일을 제거해주는 방식으로 구현)

⚽️ 트러블 슈팅

런타임에 오토레이아웃이 조절되지 않는 문제

constraints를 deactivate해주고 다시 activate하는 방식으로 해결

NSLayoutConstraint.deactivate(audioButton.constraints)
audioButton.setWidthAndHeight(width: 48, height: 48)
audioButton.setCenter(view: audioButtonBackground)
NSLayoutConstraint.activate(audioButton.constraints)

iceHood and others added 30 commits November 26, 2024 13:03
@yuncheol-AHN yuncheol-AHN requested a review from k2645 November 30, 2024 14:23
@yuncheol-AHN yuncheol-AHN requested a review from Kyxxn November 30, 2024 14:26
Copy link
Collaborator

@Kyxxn Kyxxn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 윤철님 !!
변경할 사항들은 코멘트 남겨뒀어요 !!

Copy link
Collaborator

@k2645 k2645 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니당 .ᐟ.ᐟ 👍

Comment on lines 180 to 185
case .updatedAudioFileURL:
debugPrint("updated audio file URL")
case .savedAudioFile:
debugPrint("saved audio file")
case .deleteTemporaryAudioFile:
debugPrint("delete temporary audio file")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: 해당 부분은 output에 대한 로직이 따로 존재하지않는다면 굳이 output을 방출하지 않아도 되지않을까.. 싶습니다 ! 혹시 이후 이 부분에 추가적인 로직이 필요한 것이라면 TODO로 각각의 output에 대해 어떤 로직이 추가되어야할지 적어두는게 좋을 것 같습니다 !

추가로 아래 효준님 코멘트와 같이 여기도 MHLogger로 변경해주면 좋을 것 같아용

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

todo 간단하게 작성할게요 ~

Copy link
Collaborator

@iceHood iceHood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 윤철님! 일부 궁금한 것들 댓글로 남겼습니다!_!

Comment on lines +137 to +139
let fileName = "\(identifier).m4a"
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let audioFileURL = documentDirectory.appendingPathComponent(fileName)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2. 이거 혹시 반영됐나요?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2. 이름관련해서 AudioViewController, AudionViewModel이면 추후에 저희가 보여질 뷰와 이름이 겹칠것같아서 AddAudio-- 나 EditAudio-- CreateAudio-- 등을 쓰는 것은 어떨까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정완!

// timer
private var recordingSeconds: Int = 0
private var recordingTimer: Timer?
private var timeTimer: Timer?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3. timeTimer는 혹시 어떤 역할인가요? (이름만으로 파악하기 힘든 것같아요)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

레코딩 시간을 의미하는 것이였는데, 다시보니 이해가 잘 안되서 수정했습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3. 나중에 UseCase를 통해 파일 관련 로직을 위임하는 것도 좋을 것같습니다!

@yuncheol-AHN yuncheol-AHN requested a review from Kyxxn November 30, 2024 15:04
@yuncheol-AHN
Copy link
Collaborator Author

commit count issue

@Kyxxn Kyxxn deleted the feature/add-audio branch December 6, 2024 01:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 기능 관련 작업
Projects
None yet
Development

Successfully merging this pull request may close these issues.

오디오 추가
4 participants