Voicebox FX: เปลี่ยนเสียงด้วย CircuitPython I2S

อยากลองทำ Voice Changer บนไมโครคอนโทรลเลอร์ แต่พอเจอคำว่า I2S, Audio Buffer, WAV, Pitch Shift ก็เริ่มรู้สึกว่าเรื่องเสียงมันยากเกินไป?

Voicebox FX เป็น Project ที่ช่วยแกะเรื่องพวกนี้ ให้เห็นเป็นสายงานเดียวตั้งแต่ รับเสียงจากไมโครโฟน, บันทึกเป็น WAV, เล่นกลับ, ใส่ Pitch, Reverb, Echo แล้วส่งเสียงออกลำโพง ทั้งหมดบน CircuitPython

Hackaday เลยมอง Project นี้ ไม่ใช่แค่ Gadget เปลี่ยนเสียงสนุก ๆ แต่เป็นเหมือน Reference Design สำหรับ CircuitPython I2S Audio ที่เอาไปต่อยอด Project เสียงอื่นได้อีกเยอะ

Voicebox FX CircuitPython I2S audio recording device
Voicebox FX — อุปกรณ์อัดและเปลี่ยนเสียง ที่ใช้ Feather RP2350, I2S Microphone, I2S Amplifier และ CircuitPython

Key Takeaways

  • Controller หลักคือ Adafruit Feather RP2350 with HSTX Port and 8MB PSRAM
  • รับเสียงด้วย ICS-43434 I2S MEMS Microphone
  • ส่งเสียงออกผ่าน MAX98357A I2S 3W Class-D Amplifier
  • ใช้ Mini Oval Speaker 8Ω 1W
  • อัด Audio Sample ได้สูงสุด 20 วินาทีตาม Code ของ Project
  • Recording ใช้ Sample Rate 16 kHz
  • Mic รับข้อมูล I2S และแปลง Output เป็น 16-bit Mono สำหรับระบบ Playback
  • ไฟล์ Recording ถูกบันทึกเป็น /recording.wav
  • สามารถเล่น Recording แบบ Loop
  • Physical Controls หลักคือ Pitch, Reverb และ Delay/Echo
  • Effect Chain ใช้ PitchShift → Freeverb → Echo → Distortion
  • Distortion ใน Code ถูกใช้เป็น Gain Boost ไม่ใช่ Effect Knob สำหรับผู้ใช้
  • NeoPixel 8 ดวงใช้บอก State ของ Recording / Saving / Playback / Error
  • ใช้ Battery 3.7V 2200mAh ทำให้เป็นอุปกรณ์พกพา
  • เคสมี 3MF และ CAD Source สำหรับ FDM 3D Printing
  • Minimum Build Volume คือ 80 × 130 × 16 mm
  • Project ระบุ PLA สำหรับชิ้นส่วน 3D Print

Voicebox FX คืออะไร?

Adafruit สร้าง Voicebox FX เป็นอุปกรณ์บันทึกเสียงแบบพกพา ที่ให้เราอัดเสียงสั้น ๆ แล้วเล่นกลับพร้อมเปลี่ยน Character ของเสียงด้วย Physical Controls

ผู้ใช้ไม่ต้องเปิด Laptop เพื่อหมุน Effect ระหว่าง Playback

บนตัวเครื่องมี:

  • ปุ่ม Record
  • ปุ่ม Play
  • Slide Potentiometer สำหรับ Pitch
  • Rotary Pot สำหรับ Reverb
  • Rotary Pot สำหรับ Delay / Echo
  • NeoPixel Status Lights
  • Speaker ในตัว

จุดที่ทำให้มันน่าสนใจสำหรับ Maker คือทุกอย่างไม่ได้เกิดจาก Audio Chip สำเร็จรูปที่ซ่อน Logic ไว้หมด

RP2350 รับ Audio, บันทึก, จัดการ WAV, สร้าง Effect Chain และควบคุม Playback ผ่าน CircuitPython ให้เราเห็น Workflow ค่อนข้างครบ

I2S คืออะไรแบบไม่ต้องเปิด Datasheet ก่อน?

I2S ย่อมาจาก Inter-IC Sound

ถ้าอธิบายแบบ Maker:

มันคือ Interface สำหรับส่งข้อมูลเสียงแบบดิจิทัล ระหว่าง Component

ต่างจากการอ่าน Analog Microphone ตรงที่ Audio Data ถูกส่งเป็น Digital Stream ผ่านสัญญาณ Clock และ Data

เสียงพูด

I2S Microphone

Digital Audio Data

Feather RP2350

Digital Audio Processing

I2S Amplifier

Speaker

ทำไม Voicebox FX ถึงเป็น Reference ที่ดี? เพราะมีทั้ง I2S Input และ I2S Output อยู่ใน Project เดียว ทำให้เราเห็นทั้งเส้นทาง “รับเสียงเข้า” และ “ส่งเสียงออก” แบบครบวงจร

Audio Architecture: จากเสียงพูดไปจนถึงเสียงที่ผ่าน Effect

มองภาพรวม Project นี้แยกเป็นสองช่วง:

ช่วงที่ 1 — Recording

ICS-43434 I2S Microphone

Feather RP2350

Audio Capture ใน Memory

เขียนเป็น recording.wav ลง CIRCUITPY

ช่วงที่ 2 — Playback + Effects

recording.wav

Pitch Shift

Reverb

Echo

Gain Boost

I2S Output

MAX98357A

Speaker

Project ไม่ได้ใส่ Effect ลงไปในไฟล์ต้นฉบับถาวร ก่อน Playback

ตอนเล่นกลับ Audio ถูกส่งผ่าน Effect Chain และ Potentiometer เปลี่ยน Parameter ระหว่างที่เสียงกำลัง Loop

Hardware ที่ใช้ใน Voicebox FX

อุปกรณ์ หน้าที่ใน Project
Adafruit Feather RP2350 with HSTX Port and 8MB PSRAM Controller หลักสำหรับ Recording, WAV, Effects และ I/O
Adafruit I2S MEMS Microphone Breakout – ICS-43434 รับเสียงแบบ Digital I2S
Adafruit I2S 3W Class-D Amplifier – MAX98357A รับ I2S Output และขับ Speaker
Mini Oval Speaker 8Ω 1W เล่นเสียงออกจากตัวเครื่อง
NeoPixel Stick 8 × RGB LED แสดงสถานะ Power, Record, Save, Playback และ Error
45mm Slide Potentiometer ควบคุม Pitch Shift
10K Rotary Potentiometer ×2 ควบคุม Reverb และ Delay/Echo
Kailh Choc Low Profile Key Switches ใช้เป็นปุ่ม Record / Play
Mini SPDT Toggle Switch กำหนด CIRCUITPY Read/Write State ผ่าน D25
SPDT Slide Switch เปิด/ปิด Power ผ่าน EN
Li-ion Battery 3.7V 2200mAh Power สำหรับ Portable Build
Snap-action Wire Block Connectors รวม Shared Ground และ Shared 3V Wiring
4-wire Silicone Ribbon Cable งาน Wiring ภายใน
30AWG Silicone Wire งาน Signal / Power Wiring ภายใน Case

Fasteners ตาม Build

  • 6 × M2.5 × 4 mm
  • 4 × M2.5 × 6 mm
  • 2 × M2 × 4 mm
  • 2 × M2 × 6 mm ตาม Parts List
  • 6 × M3 × 6 mm

หมายเหตุ: Assembly Page มีขั้นตอนติด Slide Pot ที่กล่าวถึง M2 × 8 mm ขณะที่ Overview Fastener List แจกแจง M2 ขนาดอื่น ดังนั้นก่อนพิมพ์ Case หรือสั่งสกรูจำนวนมาก แนะนำเปิด Assembly Guide เวอร์ชันล่าสุดตรวจซ้ำอีกครั้ง

Wiring: I2S เข้าและออกใช้ Pin คนละชุด

ICS-43434 I2S Microphone → Feather RP2350

Feather RP2350 ICS-43434
3V VDD
GND GND
D9 DOUT
D5 BCLK
D6 LRCL

MAX98357A I2S Amplifier → Feather RP2350

Feather RP2350 MAX98357A
3V VIN
GND GND
D11 LRC
D10 BCLK
SCL DIN

Controls / Status

Pin Function
A0 Slide Potentiometer — Pitch
A1 Rotary Potentiometer — Reverb
A2 Rotary Potentiometer — Delay/Echo Parameter
D24 Record Button
A3 Play Button
D12 NeoPixel Data
D25 CIRCUITPY Read/Write Toggle
EN Power Slide Switch

ชื่อ Variable ใน Code อาจชวนงง: Input A2 ถูกตั้งชื่อตัวแปรว่า dist_slide แต่ Code ปัจจุบันนำค่าจาก Input นี้ ไปควบคุม echo.decay ดังนั้น Physical Knob ด้านขวา คือ Delay/Echo Control ไม่ใช่ Distortion Knob

Recording: สูงสุด 20 วินาที และบันทึกเป็น WAV

เมื่อกด Record:

  1. I2S Output ถูกหยุดเพื่อ Mute ฝั่ง Speaker
  2. NeoPixel เปลี่ยนเป็นสีแดง
  3. ระบบสร้าง Memory Buffer สำหรับเก็บ Audio
  4. I2S Microphone เริ่มส่ง Audio เข้า Buffer

Config ปัจจุบัน ตั้ง:

  • Sample Rate: 16,000 Hz
  • Maximum Recording: 20 วินาที
  • Mono Output
  • 16-bit Output Audio
  • File: /recording.wav

ตัว I2S Microphone ถูก Config ให้รับข้อมูลที่ Bit Depth สูงกว่า แล้ว Output เป็น 16-bit สำหรับเส้นทาง Audio ของ Project

ตอนกด Record อีกครั้ง

Recording จะหยุด แล้ว NeoPixel เปลี่ยนเป็นสีเหลือง ระหว่างที่ข้อมูลใน Memory ถูกเขียนลง CIRCUITPY เป็น WAV File

จุดที่น่าเรียนรู้: Project ไม่เขียนทุก Sample ลง Flash ทันที แต่ Capture Audio ไว้ใน Memory ก่อน แล้วค่อยสร้าง WAV File เมื่อจบ Recording

Effect Chain มี 4 Stage แต่ผู้ใช้ปรับจริง 3 อย่าง

Code ประกอบ Effect Chain เป็น:

WAV

PitchShift

Freeverb

Echo

Distortion Module ใช้ Gain Boost

Mixer

I2S Out

1. Pitch Shift

Slide Potentiometer ใช้เปลี่ยน Semitone ของเสียง

Code Map ค่าจาก Slider ไปประมาณ -13 ถึง +13 Semitones ซึ่งผู้เขียน Code อธิบายในบริบท การเลื่อน Pitch ขึ้นหรือลงประมาณหนึ่ง Octave

2. Reverb

Potentiometer ฝั่งซ้าย ควบคุมสัดส่วน Reverb ใน Mix

3. Delay / Echo

Potentiometer ฝั่งขวา ควบคุมค่า Echo Decay

4. Distortion

แม้ Source Code จะสร้าง Distortion Object แต่ Guide อธิบายตรง ๆ ว่า Stage นี้ ถูกใช้เป็น:

Gain Boost สำหรับ I2S Output

ดังนั้นอย่าโปรโมตว่าเครื่องมี “Distortion Knob”: Physical Controls ที่ผู้ใช้หมุนเพื่อเปลี่ยน Effect คือ Pitch, Reverb และ Delay/Echo

Physical Controls: ไม่ต้องเปิด Serial Console ตอนเล่น

Control หน้าที่
Record Button กดเริ่มอัด / กดอีกครั้งเพื่อหยุดและ Save
Play Button เล่น Recording แบบ Loop / กดอีกครั้งเพื่อหยุด
Slide Pot เลื่อนซ้ายลด Pitch, เลื่อนขวาเพิ่ม Pitch, ตรงกลางกลับใกล้ Pitch เดิม
Rotary Pot ซ้าย เพิ่มหรือลด Reverb
Rotary Pot ขวา เพิ่มหรือลด Delay/Echo
Slide Switch Power On / Off
Toggle Switch กำหนด Filesystem Mode สำหรับ CIRCUITPY

NeoPixel 8 ดวงไม่ได้มีไว้ทำไฟ RGB เท่ ๆ อย่างเดียว

Project ใช้แสงเป็น Status Interface เพื่อบอกว่าเครื่องกำลังทำอะไร

สี / Behavior สถานะ
Purple ไล่ทีละดวง Power-on / Startup Sound
แดง กำลัง Recording
เหลือง กำลังเขียน WAV ลง CIRCUITPY
เขียว กำลัง Playback
น้ำเงิน Error เช่น Filesystem เขียนไม่ได้ หรือหา Recording ไม่เจอ
ดับ Idle / Playback หยุดแล้ว

ทำไม Voicebox FX ต้องมี Toggle สำหรับ CIRCUITPY?

ปกติเวลาเราเสียบ CircuitPython Board เข้าคอมพิวเตอร์ CIRCUITPY Drive ถูกใช้แก้ไฟล์ code.py และ Library

แต่ Voicebox FX มีอีกโจทย์:

ตัวไมโครคอนโทรลเลอร์เองต้องเขียน recording.wav ลง Drive

Project จึงใช้ boot.py กับ Toggle Switch บน D25 เพื่อกำหนด Filesystem Mode ตั้งแต่ Boot

D25 ต่อ Ground

CircuitPython เขียน CIRCUITPY ได้

recording.wav สามารถถูก Save

D25 ไม่ต่อ Ground

ใช้โหมดที่เหมาะกับการแก้ไฟล์ผ่าน Computer

ถ้าลืมเปลี่ยนโหมดก่อน Record: Code มี Error Handling และใช้ NeoPixel สีน้ำเงิน เพื่อบอกว่าไม่สามารถ Save File เพราะ Filesystem อยู่ในโหมดที่เขียนไม่ได้

CircuitPython Version รอบนี้มี Requirement ใหม่กว่าปกติ

Adafruit Guide ระบุว่า Project นี้ ใช้ Module Audio ใหม่หลายตัว เช่น:

  • audioi2sin
  • audiofilewriter
  • Pitch-shifting Module ตาม Project Bundle

ตอนที่ Guide เผยแพร่ ผู้สร้างระบุให้ใช้:

CircuitPython 10.3.0.alpha-4 หรือใหม่กว่า

จนกว่า CircuitPython 10.3.0 Stable จะออก

อย่าล็อกตัวเองไว้ที่ alpha-4 ตลอด: Requirement นี้เป็นสถานะของ Guide ณช่วงที่ Project เผยแพร่ ก่อนลงมือทำควรเปิด Install CircuitPython Page และตรวจ Release ล่าสุด ที่ผู้พัฒนาแนะนำอีกครั้ง

มี 2 จุดใน Guide ที่ชื่อไม่ตรงกัน ควรรู้ไว้ก่อน Copy File

1. GranularPitchShift vs PitchShift

หน้า Install CircuitPython กล่าวถึง Module ใหม่ ชื่อ GranularPitchShift

แต่ Code ที่แสดงในหน้า Code the Voicebox สร้าง Effect ด้วย:

audiodelays.PitchShift

บทความนี้จึงใช้คำกลางว่า:

Pitch Shift Effect ของ CircuitPython

และเวลาพูดถึง Implementation จะอิงชื่อที่ Code ปัจจุบันใช้

2. bootbeep.wav vs bootbeeps.wav

รายการไฟล์ที่หน้า Guide บอกให้ Copy เขียนว่า:

bootbeep.wav

แต่ Code ที่เปิด Startup Sound ใช้ชื่อ:

bootbeeps.wav

วิธีที่ปลอดภัยที่สุด: ดาวน์โหลด Project Bundle ของ Guide Version ล่าสุด แล้วใช้ชื่อไฟล์ ตาม Bundle และ Code ที่มากับ Version เดียวกัน ไม่ควร Rename จากบทความสรุปเพียงอย่างเดียว

3D Printed Case ทำให้ Project จากวงจรทดลองกลายเป็น Gadget จริง

ตัว Case ไม่ได้มีไว้แค่ปิดสายไฟ

Adafruit ออกแบบตำแหน่งสำหรับ:

  • Feather RP2350
  • I2S Amplifier
  • I2S Microphone
  • Battery
  • NeoPixel Stick
  • Toggle Switch
  • Power Switch
  • Potentiometers
  • Record / Play Buttons
  • Speaker

ไฟล์ที่แจก

  • Individual 3MF Files ที่จัด Orientation พร้อมสำหรับ FDM
  • Original CAD Source Files

Material

Source ระบุให้พิมพ์ ด้วย:

PLA Filament

Minimum Build Volume

Printer ต้องมีพื้นที่พิมพ์อย่างน้อย:

80 × 130 × 16 mm

Multi-color

Top Half ของ Case ถูกออกแบบสำหรับ Multi-color / AMS จำนวน 3 สี

LED Diffuser แนะนำ White หรือ Clear PLA

Knob และ Keycap มีส่วนที่ใช้ 2 สี

ไม่มี AMS ก็ทำได้

ZIP File มี:

Single-color Blank Versions

ดังนั้น Project ไม่ได้บังคับว่าต้องมี Multi-material Printer เท่านั้น

ไม่มีเครื่อง 3D Printer? ถ้าต้องการทำ Case ของ Voicebox FX หรือมีไฟล์ 3MF / CAD / STL สำหรับ Project Maker อื่น สามารถส่งไฟล์ให้ทีม Globalbyte ช่วยประเมินบริการรับพิมพ์ 3D ได้ก่อนเริ่มงานจริง

เรื่องสิทธิ์การใช้ไฟล์: ก่อนนำ CAD / 3MF ไปผลิตเพื่อจำหน่ายเชิงพาณิชย์ ควรตรวจ License และเงื่อนไขจากหน้า Project / ไฟล์ต้นฉบับ เวอร์ชันล่าสุดก่อนเสมอ

Assembly: แบ่ง Bottom Case กับ Top Case ชัดเจน

CAD Design แบ่งตำแหน่งอุปกรณ์ไว้ค่อนข้างเป็นระบบ

Bottom Half

  • Feather RP2350
  • I2S Amplifier
  • Battery
  • NeoPixel Stick
  • Toggle Switch
  • Slide Power Switch
  • Wago / Block Connectors

Top Half

  • I2S Microphone
  • Speaker
  • 2 × Rotary Potentiometers
  • Slide Potentiometer
  • Record / Play Key Switches

Step-by-Step Assembly Flow

1

ติด NeoPixel Mount

ยึด Mount เข้ากับ Bottom Case ก่อนติด NeoPixel Stick

2

ใส่ Battery และ Power Switch

Battery 2200mAh ถูกกดเข้ากับ Clip ที่ออกแบบไว้ใน Bottom Case และติด Slide Switch ใน Holder ของ Case

3

ติด Feather และ Amplifier

วาง Board บน Standoff ที่ออกแบบไว้ และยึดด้วย Machine Screws

4

ติด Toggle และ NeoPixel

Toggle Switch ยึดผ่านช่อง Case ส่วน NeoPixel Stick ยึดลง Mount

5

ติด Speaker และ Microphone

Speaker อยู่ใน Recess ของ Top Case ส่วน I2S Mic อยู่บน Standoff แยกของตัวเอง

6

ติด Button Plate และ Potentiometers

ใส่ Rotary Pots, Slide Pot และ Key Switch Assembly ตามช่องที่ออกแบบไว้

7

รวม Shared Ground

Ground จากอุปกรณ์ต่าง ๆ ถูกรวมผ่าน Block Connector ที่ติดอยู่ใน Bottom Case

8

รวม 3V Distribution

3V จาก Feather ถูกกระจายผ่านอีก Block ไปยัง Mic, Amp และ Potentiometers

9

ประกบ Case

เช็กให้สายทั้งหมด อยู่ด้านใน ก่อนยึด Top และ Bottom เข้าด้วยกัน

10

ใส่ Knobs และ Keycaps

ปิดงานด้วย Rotary Knobs, Slider Knob และ Keycaps

วิธีใช้ Voicebox FX แบบ Step-by-Step

1

เปิด Power

ใช้ Slide Switch ด้านข้าง Case เปิดเครื่อง

NeoPixel จะไล่ขึ้นทีละดวง ระหว่าง Startup Tune ก่อนเข้าสู่สถานะพร้อมใช้งาน

2

กด Record

NeoPixel เปลี่ยนเป็นสีแดง เพื่อบอกว่ากำลังอัดเสียง

3

กด Record อีกครั้งเพื่อหยุด

ไฟเปลี่ยนเป็นสีเหลือง ระหว่างเขียน recording.wav ลง CIRCUITPY

4

กด Play

ไฟเปลี่ยนเป็นสีเขียว และ Recording เริ่มเล่นแบบ Loop

5

เลื่อน Pitch

เลื่อน Slider ไปซ้ายเพื่อลด Pitch, ไปขวาเพื่อเพิ่ม Pitch และกลับตรงกลาง เพื่อเข้าใกล้เสียงต้นฉบับ

6

หมุน Reverb

Potentiometer ฝั่งซ้าย เพิ่มหรือลดปริมาณ Reverb

7

หมุน Echo

Potentiometer ฝั่งขวา เปลี่ยน Delay/Echo ของเสียงที่กำลังเล่น

8

กด Play เพื่อหยุด

Playback หยุด และ NeoPixel กลับเป็นสถานะดับ

Code Snippet ที่ช่วยให้เห็น Architecture

Project มี Source Code เต็ม บน Adafruit Guide แต่ในบทความนี้ เลือกเฉพาะ Config สั้น ๆ ที่ช่วยให้เข้าใจ Flow โดยไม่แทนที่ Code ต้นฉบับ

Recording Configuration
SAMPLE_RATE = 16000
OUTPUT_PATH = "/recording.wav"
MAX_RECORD_SECONDS = 20
CIRCUITPY Read / Write State
storage.remount("/", readonly=switch.value)
Playback Effect Chain
pitch_shift.play(wav, loop=True)
reverb.play(pitch_shift, loop=True)
echo.play(reverb, loop=True)
amp.play(echo, loop=True)

อย่าใช้ Snippet นี้แทน Source Code เต็ม: Project ยังมี Import, Pin Setup, Audio Mixer, Error Handling, NeoPixel State, Button Logic และ Library Dependencies อีกหลายส่วน ควรเปิด Code ต้นฉบับ ก่อน Flash ลง Board

ดู Case และ Demo เพิ่มเติม

รอบนี้มีหลายภาพ และมีวิดีโอ 2 ตัว จึงแสดง Hero เพียงภาพเดียวด้านบน ส่วน Media อื่น ซ่อนไว้ใน Pure CSS View more

Voicebox FX portable 3D printed enclosure
Voicebox FX ภายใน Enclosure 3D Print ที่รวม Board, Controls, Speaker และ Battery เป็นอุปกรณ์พกพา
Voicebox FX 3D printed case and physical controls
มุมมองตัว Case และ Physical Controls สำหรับ Pitch, Reverb, Delay/Echo, Record และ Playback
วิดีโอ Voicebox FX Audio Recording Device สำหรับดูตัวเครื่องและ Workflow การใช้งานโดยรวม
Voicebox FX Demo แสดงการเปลี่ยนเสียงด้วย Pitch, Reverb และ Delay/Echo

ทำไม Hackaday ถึงเรียก Project นี้ว่า Blueprint สำหรับ I2S Audio?

เพราะ Voicebox FX ไม่ได้โชว์แค่ “เปิด WAV File แล้วส่งออก Speaker”

แต่รวมเส้นทาง Audio หลายส่วนไว้พร้อมกัน:

  • I2S Digital Microphone Input
  • Audio Capture
  • Memory Buffer
  • WAV File Writing
  • Looped Playback
  • Real-time Effect Parameters
  • Audio Mixer
  • I2S Digital Output
  • Class-D Amplifier
  • Physical User Interface

เพราะฉะนั้น ถ้า Project ถัดไปของเรา เป็น:

  • Voice Recorder
  • Sound Toy
  • Audio Sampler
  • Portable Sound Effect Box
  • Interactive Prop
  • Audio Installation

Architecture ของ Voicebox FX ก็เป็นจุดเริ่มต้น สำหรับศึกษาต่อได้ โดยไม่จำเป็นต้อง Copy ตัวเครื่องทั้งชุด

ถ้าเป็น Maker ไทย ควรเริ่มจากส่วนไหนก่อน?

ไม่จำเป็นต้องพิมพ์ Case และประกอบทุกอย่าง ตั้งแต่วันแรก

ถ้าเป้าหมายคือ เรียน CircuitPython Audio สามารถแยกทดลองเป็น Stage ตาม Architecture ของต้นฉบับได้

1

เริ่มจาก I2S Microphone

ให้ Board รับ Audio Digital Stream ได้ก่อน

2

ทดสอบ Recording

ลอง Capture และสร้าง WAV ตาม Flow ของ Project

3

เพิ่ม I2S Output

ต่อ MAX98357A และ Speaker ให้ Playback ทำงานก่อนใส่ Effect

4

ค่อยต่อ Physical Controls

เพิ่ม Slide Pot, Rotary Pots และ Buttons เมื่อ Audio Path พื้นฐานทำงานแล้ว

5

ปิดงานด้วย Enclosure

เมื่อ Electronics ผ่านการทดสอบ ค่อยพิมพ์ 3D Case และประกอบเป็น Portable Device

ถ้ากำลังหา Board, Sensor, Audio Module หรือบริการ 3D Print: สามารถส่งโจทย์ Project ให้ทีม Globalbyte ช่วยเช็กตัวเลือก และประเมินงานพิมพ์ Case ก่อนเริ่มประกอบได้

Project นี้มีทั้ง Audio, Filesystem และ CAD — แนะนำเปิดต้นฉบับควบคู่กัน

โดยเฉพาะก่อน:

  • Flash CircuitPython
  • Copy Project Bundle
  • ต่อ I2S Microphone
  • ต่อ I2S Amplifier
  • เปลี่ยน CIRCUITPY Read/Write Mode
  • แก้ Audio Code
  • พิมพ์ 3D Case
  • ประกอบ Wiring ทั้งเครื่อง

FAQ: Voicebox FX และ CircuitPython I2S

Voicebox FX ใช้ไมโครคอนโทรลเลอร์อะไร?

ใช้ Adafruit Feather RP2350 with HSTX Port and 8MB PSRAM ตาม Project ต้นฉบับ

เป็น AI Voice Changer หรือไม่?

ไม่ Project ใช้ Digital Audio Effects เช่น Pitch Shift, Reverb และ Echo ไม่ได้ใช้ AI Model ตาม Source

I2S ใช้ตรงไหนบ้าง?

ใช้ทั้งฝั่ง ICS-43434 Microphone ส่ง Audio เข้า RP2350 และฝั่ง RP2350 ส่ง Audio ไป MAX98357A Amplifier

อัดเสียงได้นานแค่ไหน?

Code ปัจจุบัน ตั้ง Maximum Recording ไว้ 20 วินาที

Recording ใช้ Sample Rate เท่าไร?

16 kHz ตาม Config ใน Source Code

เสียงเป็น Stereo ไหม?

Recording Path ใน Code ตั้ง Output เป็น Mono และใช้ 16-bit Audio

Recording ถูกเก็บไว้ที่ไหน?

บันทึกเป็น /recording.wav บน CIRCUITPY Filesystem

ทำไมต้องมี Toggle Switch แยก?

Toggle บน D25 ถูกใช้โดย boot.py เพื่อกำหนด Read/Write State ของ CIRCUITPY เนื่องจากตัว Board ต้องสามารถ Save Recording ลง Filesystem ได้

มี Effect อะไรให้ปรับ?

Physical Controls ปรับ Pitch, Reverb และ Delay/Echo

แล้ว Distortion ใน Code คืออะไร?

Guide ระบุว่า Distortion Effect Object ถูกใช้เป็น Amplifier / Gain Boost สำหรับ I2S Output ไม่ใช่ Physical Effect Knob ที่ผู้ใช้ปรับโดยตรง

Pitch เลื่อนได้ประมาณเท่าไร?

Code Map ค่า ประมาณ -13 ถึง +13 Semitones เพื่อให้เลื่อนเสียงลงและขึ้น ในช่วงประมาณหนึ่ง Octave

ไฟสีแดงหมายถึงอะไร?

กำลัง Recording

ไฟสีเหลืองหมายถึงอะไร?

กำลังเขียน WAV File ลง CIRCUITPY

ไฟสีเขียวหมายถึงอะไร?

กำลัง Playback Recording

ไฟสีน้ำเงินหมายถึงอะไร?

Code ใช้สีน้ำเงิน สำหรับ Error State เช่นเขียน File ไม่ได้ หรือ Recording File หาย

ใช้ CircuitPython Version ไหน?

Guide ณเวลาที่เผยแพร่ ระบุ 10.3.0.alpha-4 หรือใหม่กว่า จนกว่า 10.3.0 Stable จะออก จึงควรตรวจหน้า Install ล่าสุดก่อนเริ่ม Project

เคสต้องใช้ Printer แบบ Multi-color เท่านั้นไหม?

ไม่ Design หลักรองรับ Multi-color แต่ ZIP File มี Single-color Blank Versions สำหรับบางชิ้นด้วย

ใช้ Filament อะไร?

CAD Guide ระบุ PLA สำหรับ FDM Printing

Printer ต้องมี Build Volume อย่างน้อยเท่าไร?

80 × 130 × 16 mm ตาม CAD Guide

ไม่มีเครื่อง 3D Printer ทำยังไง?

สามารถใช้ไฟล์ 3MF / CAD จาก Source แล้วส่งให้บริการ 3D Printing ช่วยประเมินงานได้ โดยควรตรวจ License หากจะนำชิ้นงานไปใช้เชิงพาณิชย์

Voicebox FX น่าสนใจเพราะมันไม่ได้สอน Audio แค่ครึ่งทาง

Project Audio หลายตัว มักสอนอย่างใดอย่างหนึ่ง:

“อ่าน Mic” หรือ “เล่น WAV”

แต่ Voicebox FX เชื่อมหลายเรื่องเข้าด้วยกัน จนเห็น System แบบ End-to-End:

I2S Microphone

RP2350 Audio Capture

WAV Recording

Pitch + Reverb + Echo

Mixer / Gain

I2S Amplifier

Speaker

Physical Controls + NeoPixel Status

Portable 3D Printed Device

สำหรับ Maker ที่อยากเริ่มจับ CircuitPython Audio แบบจริงจังกว่า “เปิดเสียง Beep” Project นี้จึงเป็นตัวอย่าง ที่น่าแกะมาก

เพราะนอกจาก Software ยังได้เห็นด้วยว่า Audio Project ที่ใช้งานจริง ต้องคิดถึง Input, Output, File Storage, User Control, Status Feedback, Power และ Enclosure พร้อมกันยังไง

References / แหล่งข้อมูลต้นฉบับ

อยากทำ Audio Project แต่ยังขาด Board, Module หรือ Case?

ถ้ากำลังทำ Project แนว Voice Recorder, Audio Effects, CircuitPython, I2S, RP2350 หรืออุปกรณ์ Maker สามารถสอบถามทีม Globalbyte เพื่อช่วยเช็ก Board และ Module ที่เหมาะกับโจทย์ได้

และถ้ามีไฟล์ 3MF, STL หรือ CAD สำหรับ Enclosure แต่ยังไม่มีเครื่องพิมพ์ สามารถส่งไฟล์ เพื่อสอบถามบริการรับพิมพ์ 3D ของ Globalbyte และประเมินงานก่อนผลิตได้

บทความนี้ไม่ได้ยืนยันว่า Feather RP2350, ICS-43434, MAX98357A หรืออุปกรณ์รุ่นเดียวกับต้นฉบับ มี Stock พร้อมจำหน่ายที่ Globalbyte กรุณาสอบถามผ่าน LINE OA เพื่อเช็กสินค้า หรือหาอุปกรณ์ทางเลือก ที่เหมาะกับ Project

 


Blog posts