กำหนดบัฟเฟอร์ของริงและฟังก์ชันยูทิลิตีบางอย่างเพื่อเตรียมตัวอย่างเสียงอินพุต
โดยมีบัฟเฟอร์แหวนเพื่อเก็บข้อมูลเสียงอินพุต ไคลเอ็นต์จะป้อนข้อมูลเสียงผ่านเมธอด "load" และเข้าถึงตัวอย่างเสียงแบบรวมผ่านเมธอด "getTensorBuffer" ได้
โปรดทราบว่าคลาสนี้สามารถจัดการเสียงอินพุตได้เฉพาะใน Float (ใน AudioFormat.ENCODING_PCM_16BIT
) หรือ Shorts (ใน AudioFormat.ENCODING_PCM_FLOAT
) คลาสนี้จะแปลงและจัดเก็บตัวอย่างเสียงทั้งหมดไว้ในการเข้ารหัส PCM Float
การใช้งานทั่วไปใน Kotlin
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
ตัวอย่างการใช้งาน AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
ชั้นเรียนที่ซ้อนกัน
คลาส | TensorAudio.TensorAudioFormat | ตัดค่าคงที่ 2-3 รายการที่อธิบายรูปแบบของตัวอย่างเสียงที่เข้ามาใหม่ ได้แก่ จำนวนช่องสัญญาณและอัตราการสุ่มตัวอย่าง |
วิธีการสาธารณะ
ภาพนิ่ง TensorAudio |
create(รูปแบบ AudioFormat, int sampleCounts)
|
ภาพนิ่ง TensorAudio |
create(รูปแบบ TensorAudio.TensorAudioFormat, int sampleCounts)
|
TensorAudio.TensorAudioFormat | |
TensorBuffer |
getTensorBuffer()
แสดงผลเลขทศนิยม
TensorBuffer ที่มีตัวอย่างเสียงที่มีอยู่ทั้งหมดใน AudioFormat.ENCODING_PCM_FLOAT นั่นคือ |
void |
load(short[] src)
แปลงตัวอย่างเสียงอินพุต
src เป็น ENCODING_PCM_FLOAT จากนั้นเก็บไว้ในบัฟเฟอร์ของริง |
void |
load(Float[] src, int delayInFloat, int sizeInFloat)
จัดเก็บตัวอย่างเสียงอินพุต
src ในบัฟเฟอร์ของริง |
void |
load(short[] src, int delayInShort, int sizeInShort)
แปลงตัวอย่างเสียงอินพุต
src เป็น ENCODING_PCM_FLOAT จากนั้นเก็บไว้ในบัฟเฟอร์ของริง |
int |
load(ระเบียน Audiorecord)
โหลดข้อมูลล่าสุดจาก
AudioRecord แบบไม่บล็อก |
void |
load(Float[] src)
จัดเก็บตัวอย่างเสียงอินพุต
src ในบัฟเฟอร์ของริง |
วิธีการที่รับช่วงมา
วิธีการสาธารณะ
สาธารณะ static TensorAudio สร้าง (รูปแบบ AudioFormat, int sampleCounts)
สร้างอินสแตนซ์ TensorAudio
ที่มีบัฟเฟอร์ริงซึ่งมีขนาด sampleCounts
* format.getChannelCount()
พารามิเตอร์
รูปแบบ | AudioFormat ตามที่โมเดล TFLite กำหนด ซึ่งระบุจำนวนของแชแนลและอัตราการสุ่มตัวอย่าง |
---|---|
sampleCounts | จำนวนตัวอย่างที่จะป้อนลงในโมเดล |
สาธารณะ แบบคงที่ TensorAudio สร้าง (รูปแบบTensorAudio.TensorAudioFormat, int sampleCounts)
สร้างอินสแตนซ์ AudioRecord
ที่มีบัฟเฟอร์ริงซึ่งมีขนาด sampleCounts
* format.getChannels()
พารามิเตอร์
รูปแบบ | TensorAudio.TensorAudioFormat ที่คาดไว้ของข้อมูลเสียงซึ่งโหลดลงในคลาสนี้ |
---|---|
sampleCounts | จำนวนตัวอย่างที่จะป้อนลงในโมเดล |
สาธารณะ TensorBuffer getTensorBuffer ()
แสดงผลเลขทศนิยม TensorBuffer
ที่มีตัวอย่างเสียงที่มีอยู่ทั้งหมดใน AudioFormat.ENCODING_PCM_FLOAT
เช่น ค่าอยู่ในช่วง [-1, 1]
สาธารณะ โมฆะ โหลด (short[] src)
แปลงตัวอย่างเสียงอินพุต src
เป็น ENCODING_PCM_FLOAT จากนั้นเก็บไว้ในบัฟเฟอร์ของริง
พารามิเตอร์
src | ป้อนตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_16BIT สำหรับอินพุตหลายช่องทาง ระบบจะแทรกอาร์เรย์ของอินพุต
|
---|
สาธารณะ void โหลด (Float[] src, int officeInFloat, int sizeInFloat)
จัดเก็บตัวอย่างเสียงอินพุต src
ในบัฟเฟอร์ของริง
พารามิเตอร์
src | ป้อนตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_FLOAT สำหรับอินพุตหลายช่องทาง ระบบจะแทรกอาร์เรย์ของอินพุต |
---|---|
offsetInFloat | ตำแหน่งเริ่มต้นในอาร์เรย์ src |
sizeInFloat | จำนวนค่าทศนิยมที่จะคัดลอก |
การขว้าง
IllegalArgumentException | สำหรับรูปแบบเสียงที่ใช้ร่วมกันไม่ได้หรือขนาดอินพุตไม่ถูกต้อง |
---|
สาธารณะ void โหลด (short[] src, int officeInShort, int sizeInShort)
แปลงตัวอย่างเสียงอินพุต src
เป็น ENCODING_PCM_FLOAT จากนั้นเก็บไว้ในบัฟเฟอร์ของริง
พารามิเตอร์
src | ป้อนตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_16BIT สำหรับอินพุตหลายช่องทาง ระบบจะแทรกอาร์เรย์ของอินพุต |
---|---|
offsetInShort | ตำแหน่งเริ่มต้นในอาร์เรย์ src |
sizeInShort | จำนวนค่าสั้นที่จะคัดลอก |
การขว้าง
IllegalArgumentException | หากคัดลอกอาร์เรย์แหล่งที่มาไม่ได้ |
---|
สาธารณะ int load (ระเบียน AudioRecording)
โหลดข้อมูลล่าสุดจาก AudioRecord
แบบไม่บล็อก รองรับ ENCODING_PCM_16BIT และ ENCODING_PCM_FLOAT เท่านั้น
พารามิเตอร์
บันทึก | อินสแตนซ์ของ AudioRecord |
---|
การคืนสินค้า
- จำนวนของค่าเสียงที่บันทึกที่มีขนาด
channelCount * sampleCount
หากไม่มีข้อมูลใหม่ใน Audiorecord หรือเกิดข้อผิดพลาดขึ้น วิธีนี้จะแสดงผลเป็น 0
การขว้าง
IllegalArgumentException | สำหรับรูปแบบการเข้ารหัสเสียงที่ไม่รองรับ |
---|---|
IllegalStateException | หากการอ่านจาก AudioRecording ล้มเหลว |
สาธารณะ void load (Float[] src)
จัดเก็บตัวอย่างเสียงอินพุต src
ในบัฟเฟอร์ของริง
พารามิเตอร์
src | ป้อนตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_FLOAT สำหรับอินพุตหลายช่องทาง ระบบจะแทรกอาร์เรย์ของอินพุต
|
---|