Swift Academy · บทเรียน

การบันทึกเสียง

บันทึกข้อมูลจากไมโครโฟนลงในไฟล์

บทเรียน 2 จาก 413 ขั้นตอน

การบันทึกเสียง เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

การบันทึกด้วย AVAudioRecorder

AVAudioRecorder บันทึกเสียงจากไมโครโฟนลงในไฟล์โดยตั้งค่าเพียงเล็กน้อย เหมาะสำหรับบันทึกเสียงเตือนความจำและเครื่องบันทึกเสียงแบบง่าย

import AVFoundation

สิทธิ์เข้าถึงไมโครโฟน

การบันทึกเสียงต้องได้รับสิทธิ์จากผู้ใช้ เพิ่ม NSMicrophoneUsageDescription ลงใน Info.plist และขอสิทธิ์เข้าถึงก่อนเริ่มบันทึก

AVAudioApplication.requestRecordPermission { granted in
    if granted { /* start recording */ }
}

การกำหนดค่าเซสชันเสียง

ตั้งหมวดหมู่ของเซสชันเป็น .record หรือ .playAndRecord แล้วเปิดใช้งาน เพื่อให้ระบบส่งสัญญาณเสียงจากไมโครโฟนเข้าสู่แอปของคุณ

let session = AVAudioSession.sharedInstance()
try session.setCategory(.playAndRecord)
try session.setActive(true)

การเลือก URL ของไฟล์

การบันทึกเสียงจะถูกเขียนลงในไฟล์ สร้าง URL ในไดเรกทอรีเอกสารโดยใช้นามสกุลที่เหมาะสม เช่น .m4a

let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = dir.appendingPathComponent("memo.m4a")

การตั้งค่าเครื่องบันทึก

การตั้งค่าจะกำหนดรูปแบบ อัตราการสุ่มตัวอย่าง จำนวนช่องสัญญาณ และคุณภาพผ่านพจนานุกรมคีย์ของ AVAudioRecorder

let settings: [String: Any] = [
    AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
    AVSampleRateKey: 44100,
    AVNumberOfChannelsKey: 1,
    AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]

การสร้างเครื่องบันทึก

เริ่มต้น AVAudioRecorder ด้วย URL และการตั้งค่า จากนั้นเรียกใช้ prepareToRecord() เพื่อจัดสรรทรัพยากร

let recorder = try AVAudioRecorder(url: url, settings: settings)
recorder.prepareToRecord()

การเริ่มและหยุด

เรียกใช้ record() เพื่อเริ่มบันทึก และ stop() เพื่อจบการบันทึก การหยุดจะทำให้ไฟล์เสียงเสร็จสมบูรณ์และปิดไฟล์

recorder.record()
// later
recorder.stop()

การบันทึกตามเวลาและการหยุดชั่วคราว

คุณสามารถบันทึกเป็นระยะเวลาที่กำหนดด้วย record(forDuration:) และใช้ pause() / record() เพื่อบันทึกต่อในไฟล์เดิม

recorder.record(forDuration: 30) // stop after 30s

การวัดระดับเสียง

เปิดใช้ isMeteringEnabled จากนั้นเรียก updateMeters() และอ่านค่า averagePower(forChannel:) เพื่อขับเคลื่อนมาตรวัดระดับเสียงแบบเรียลไทม์

recorder.isMeteringEnabled = true
recorder.updateMeters()
let power = recorder.averagePower(forChannel: 0) // in dB

ตัวแทน

ทำให้สอดคล้องกับ AVAudioRecorderDelegate เพื่อรับทราบว่าการบันทึกเสร็จสมบูรณ์หรือเกิดข้อผิดพลาดในการเข้ารหัส

func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder,
                                     successfully flag: Bool) {
    print("finished: \(flag)")
}

การเล่นผลลัพธ์

หลังจากบันทึกแล้ว ให้เล่นไฟล์ด้วย AVAudioPlayer โดยชี้ไปยัง URL เดียวกัน ซึ่งเป็นวิธีรวดเร็วในการตรวจสอบการบันทึก

let player = try AVAudioPlayer(contentsOf: url)
player.play()

ตรวจสอบความเข้าใจอย่างรวดเร็ว: การบันทึก

ทดสอบความเข้าใจเกี่ยวกับการบันทึกเสียงของคุณ

ทบทวน: การบันทึกเสียง

AVAudioRecorder บันทึกเสียงจากไมโครโฟนลงในไฟล์ หลังจากคุณขอสิทธิ์และเปิดใช้งาน AVAudioSession สำหรับการบันทึกแล้ว ระบุ URL และพจนานุกรมการตั้งค่า (รูปแบบ อัตราการสุ่มตัวอย่าง จำนวนช่องสัญญาณ และคุณภาพ) เรียกใช้ prepareToRecord() แล้วจึงใช้ record()/stop()

เปิดใช้การวัดระดับเสียงเพื่อแสดงระดับแบบเรียลไทม์ ใช้ตัวแทนเพื่อตรวจจับการเสร็จสิ้น และเล่นกลับด้วย AVAudioPlayer เพื่อตรวจสอบ

เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “การบันทึกเสียง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การบันทึกเสียง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การบันทึกเสียง”

บันทึกข้อมูลจากไมโครโฟนลงในไฟล์ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การบันทึกเสียง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเล่นสื่อด้วย AVPlayer
  2. การบันทึกเสียง
  3. AVAsset และ Composition
  4. การฝังตัวเล่นใน SwiftUI
← กลับไปที่ Swift Academy