กำหนดบัฟเฟอร์วงแหวนและฟังก์ชันยูทิลิตี้บางอย่างเพื่อเตรียมตัวอย่างเสียงอินพุต
โดยจะรักษา Ring Buffer เพื่อเก็บข้อมูลเสียงอินพุต ลูกค้าสามารถป้อนข้อมูลเสียงอินพุตด้วยวิธี "โหลด" และเข้าถึงตัวอย่างเสียงที่รวบรวมไว้ผ่านวิธี "getTensorBuffer"
โปรดทราบว่าคลาสนี้สามารถจัดการเฉพาะเสียงอินพุตใน Float (ใน AudioFormat.ENCODING_PCM_16BIT
) หรือ Short (ใน 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 | ล้อมค่าคงที่สองสามตัวที่อธิบายรูปแบบของตัวอย่างเสียงที่เข้ามา ได้แก่ จำนวนช่องสัญญาณและอัตราตัวอย่าง |
วิธีการสาธารณะ
TensorAudio แบบคงที่ | สร้าง (รูปแบบ AudioFormat, int SampleCounts) |
TensorAudio แบบคงที่ | สร้าง (รูปแบบ TensorAudio.TensorAudioFormat , int SampleCounts) |
TensorAudio.TensorAudioFormat | รับรูปแบบ () |
TensorBuffer | รับเทนเซอร์บัฟเฟอร์ () ส่งคืน float TensorBuffer ที่เก็บตัวอย่างเสียงทั้งหมดที่มีอยู่ใน AudioFormat.ENCODING_PCM_FLOAT เช่น |
เป็นโมฆะ | โหลด (สั้น[] src) แปลงตัวอย่างเสียงอินพุต src เป็น ENCODING_PCM_FLOAT จากนั้นจัดเก็บไว้ในบัฟเฟอร์วงแหวน |
เป็นโมฆะ | โหลด (ลอย [] src, int offsetInFloat, int sizeInFloat) เก็บตัวอย่างเสียงอินพุต src ไว้ในบัฟเฟอร์วงแหวน |
เป็นโมฆะ | โหลด (สั้น [] src, int offsetInShort, int sizeInShort) แปลงตัวอย่างเสียงอินพุต src เป็น ENCODING_PCM_FLOAT จากนั้นจัดเก็บไว้ในบัฟเฟอร์วงแหวน |
ภายใน | โหลด (บันทึก AudioRecord) โหลดข้อมูลล่าสุดจาก AudioRecord ในลักษณะที่ไม่ปิดกั้น |
เป็นโมฆะ | โหลด (ลอย [] src) เก็บตัวอย่างเสียงอินพุต src ไว้ในบัฟเฟอร์วงแหวน |
วิธีการสืบทอด
วิธีการสาธารณะ
การสร้าง TensorAudio แบบคงที่สาธารณะ (รูปแบบ AudioFormat, int SampleCounts)
สร้างอินสแตนซ์ TensorAudio
ด้วยบัฟเฟอร์วงแหวนซึ่งมีขนาดเป็น sampleCounts
* format.getChannelCount()
พารามิเตอร์
รูปแบบ | AudioFormat ที่จำเป็นสำหรับรุ่น TFLite กำหนดจำนวนช่องสัญญาณและอัตราตัวอย่าง |
---|---|
ตัวอย่างนับ | จำนวนตัวอย่างที่จะป้อนเข้าไปในแบบจำลอง |
สร้าง TensorAudio แบบคงที่สาธารณะ (รูปแบบ TensorAudio.TensorAudioFormat , int SampleCounts)
สร้างอินสแตนซ์ AudioRecord
ด้วยบัฟเฟอร์วงแหวนซึ่งมีขนาดเป็น sampleCounts
* format.getChannels()
พารามิเตอร์
รูปแบบ | TensorAudio.TensorAudioFormat ที่คาดหวังของข้อมูลเสียงที่โหลดลงในคลาสนี้ |
---|---|
ตัวอย่างนับ | จำนวนตัวอย่างที่จะป้อนเข้าไปในแบบจำลอง |
TensorBuffer สาธารณะ getTensorBuffer ()
ส่งกลับค่า float TensorBuffer
ที่เก็บตัวอย่างเสียงที่มีอยู่ทั้งหมดใน AudioFormat.ENCODING_PCM_FLOAT
เช่น ค่าจะอยู่ในช่วง [-1, 1]
โหลด โมฆะสาธารณะ (สั้น [] src)
แปลงตัวอย่างเสียงอินพุต src
เป็น ENCODING_PCM_FLOAT จากนั้นจัดเก็บไว้ในบัฟเฟอร์วงแหวน
พารามิเตอร์
src | อินพุตตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_16BIT สำหรับอินพุตแบบหลายช่องสัญญาณ อาเรย์จะถูกสลับกัน |
---|
โหลด โมฆะสาธารณะ (float [] src, int offsetInFloat, int sizeInFloat)
เก็บตัวอย่างเสียงอินพุต src
ไว้ในบัฟเฟอร์วงแหวน
พารามิเตอร์
src | อินพุตตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_FLOAT สำหรับอินพุตแบบหลายช่องสัญญาณ อาเรย์จะถูกสลับกัน |
---|---|
ชดเชยInFloat | ตำแหน่งเริ่มต้นในอาร์เรย์ src |
ขนาดInFloat | จำนวนค่าทศนิยมที่จะคัดลอก |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | สำหรับรูปแบบเสียงที่เข้ากันไม่ได้หรือขนาดอินพุตไม่ถูกต้อง |
---|
โหลด โมฆะสาธารณะ (สั้น [] src, int offsetInShort, int sizeInShort)
แปลงตัวอย่างเสียงอินพุต src
เป็น ENCODING_PCM_FLOAT จากนั้นจัดเก็บไว้ในบัฟเฟอร์วงแหวน
พารามิเตอร์
src | อินพุตตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_16BIT สำหรับอินพุตแบบหลายช่องสัญญาณ อาเรย์จะถูกสลับกัน |
---|---|
ชดเชยInShort | ตำแหน่งเริ่มต้นในอาร์เรย์ src |
ขนาดInShort | จำนวนค่าสั้นที่จะคัดลอก |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากไม่สามารถคัดลอกอาร์เรย์ต้นทางได้ |
---|
โหลด int สาธารณะ (บันทึก AudioRecord)
โหลดข้อมูลล่าสุดจาก AudioRecord
ในลักษณะที่ไม่ปิดกั้น รองรับเฉพาะ ENCODING_PCM_16BIT และ ENCODING_PCM_FLOAT
พารามิเตอร์
บันทึก | ตัวอย่างของ AudioRecord |
---|
การส่งคืน
- จำนวนค่าเสียงที่บันทึกซึ่งมีขนาดเป็น
channelCount * sampleCount
หากไม่มีข้อมูลใหม่ใน AudioRecord หรือมีข้อผิดพลาดเกิดขึ้น วิธีการนี้จะคืนค่า 0
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | สำหรับรูปแบบการเข้ารหัสเสียงที่ไม่รองรับ |
---|---|
IllegalStateException | หากการอ่านจาก AudioRecord ล้มเหลว |
โหลด โมฆะสาธารณะ (float[] src)
เก็บตัวอย่างเสียงอินพุต src
ไว้ในบัฟเฟอร์วงแหวน
พารามิเตอร์
src | อินพุตตัวอย่างเสียงใน AudioFormat.ENCODING_PCM_FLOAT สำหรับอินพุตแบบหลายช่องสัญญาณ อาเรย์จะถูกสลับกัน |
---|