تحدد المخزن المؤقت الدائري وبعض وظائف الأداة المساعدة لتحضير عينات الصوت المدخلة.
الاحتفاظ بـ Ring Buffer للحفاظ على إدخال البيانات الصوتية يمكن للعملاء إدخال البيانات الصوتية عبر طرق "التحميل" والوصول إلى لعينات صوتية مجمّعة باستخدام طريقة getTensorBuffer.
يُرجى العلم أنّ هذه الفئة يمكنها فقط معالجة صوت الإدخال في الوضع العائم (في 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 | تلفّ بعض الثوابت التي تصف تنسيق العيّنات الصوتية الواردة، أي عدد القنوات ومعدل العينة. | |
الطرق العامة
| ثابتة TensorAudio |
create(تنسيق تنسيق الصوت، عدد نماذج عدد صحيح)
|
| ثابتة TensorAudio |
create(تنسيق TensorAudio.TensorAudioFormat، عدد صحيح ضمن عينات)
|
| TensorAudio.TensorAudioFormat | |
| TensorBuffer |
getTensorBuffer()
تعرض قيمة عائمة
TensorBuffer تحتوي على جميع العيّنات الصوتية المتاحة في AudioFormat.ENCODING_PCM_FLOAT، أي. |
| فراغ |
load(short[] src)
تحويل عيّنات الإدخال الصوتي
src إلى ENCODING_PCM_FLOAT، ثم تخزينها في الحلقة
المورد الاحتياطي. |
| فراغ |
load(float[] src, int offsetInFloat, int sizeInFloat)
تخزين عيّنات صوت الإدخال
src في المخزن المؤقت للحلقة |
| فراغ |
load(short[] src, int offsetInShorts, int sizeInShort)
تحويل عيّنات الإدخال الصوتي
src إلى ENCODING_PCM_FLOAT، ثم تخزينها في الحلقة
المورد الاحتياطي. |
| int |
load(سجلّ AudioRecord)
يتم تحميل أحدث البيانات من "
AudioRecord" بطريقة لا تؤدي إلى الحظر. |
| فراغ |
load(float[] src)
تخزين عيّنات صوت الإدخال
src في المخزن المؤقت للحلقة |
الطرق المكتسبة
الطرق العامة
علنية ثابتة TensorAudio إنشاء (تنسيق الصوت، عدد عينات البيانات)
يتم إنشاء مثيل TensorAudio مع مخزن مؤقت للرنين يبلغ حجمه sampleCounts *
format.getChannelCount()
المعلمات
| التنسيق | AudioFormat الذي يتطلبه نموذج TFLite. وهي تحدد
عدد القنوات ومعدل العينة. |
|---|---|
| sampleCounts | عدد العينات التي سيتم إطعامها في النموذج |
علنية ثابتة TensorAudio إنشاء (تنسيق TensorAudio.TensorAudioFormat، عدد صحيح عيّنات)
تنشئ هذه الدالة مثيل 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. بالنسبة
إدخال متعدد القنوات، فإن الصفيفة متداخلة.
|
|---|
علنية فراغ تحميل (float[] src, int offsetInFloat, int sizeInFloat)
تخزين عيّنات صوت الإدخال src في المخزن المؤقت للحلقة
المعلمات
| src | يُرجى إدخال عيّنات صوتية في AudioFormat.ENCODING_PCM_FLOAT. بالنسبة
إدخال متعدد القنوات، فإن الصفيفة متداخلة. |
|---|---|
| offsetInFloat | موضع البداية في المصفوفة src |
| sizeInFloat | عدد القيم العائمة المراد نسخها |
الرميات
| IllegalArgumentException | بسبب عدم توافق تنسيق الصوت أو حجم إدخال غير صحيح |
|---|
علنية فراغ تحميل (short[] src, int offsetInShort, int sizeInShort)
تحويل عيّنات الإدخال الصوتي src إلى ENCODING_PCM_FLOAT، ثم تخزينها في الحلقة
المورد الاحتياطي.
المعلمات
| src | يُرجى إدخال عيّنات صوتية في AudioFormat.ENCODING_PCM_16BIT. بالنسبة
إدخال متعدد القنوات، فإن الصفيفة متداخلة. |
|---|---|
| offsetInShort | موضع البداية في صفيفة src |
| sizeInShort | عدد القيم القصيرة المراد نسخها |
الرميات
| IllegalArgumentException | إذا تعذّر نسخ الصفيف المصدر |
|---|
علنية تدخُّل دفاعي تحميل (سجلّ AudioRecord)
يتم تحميل أحدث البيانات من "AudioRecord" بطريقة لا تؤدي إلى الحظر. فقط
التوافق مع ENCODING_PCM_16BIT وENCODING_PCM_FLOAT
المعلمات
| تسجيل | مثال على AudioRecord |
|---|
المرتجعات
- عدد قيم الصوت التي تم التقاطها والتي يبلغ حجمها
channelCount * sampleCountفي حال حذف لم تكن هناك بيانات جديدة في AudioRecord أو حدث خطأ، ستعرض هذه الطريقة القيمة 0.
الرميات
| IllegalArgumentException | لتنسيق ترميز الصوت غير متوافق |
|---|---|
| IllegalStateException | في حال تعذّر القراءة من AudioRecord |
علنية فراغ تحميل (float[] src)
تخزين عيّنات صوت الإدخال src في المخزن المؤقت للحلقة
المعلمات
| src | يُرجى إدخال عيّنات صوتية في AudioFormat.ENCODING_PCM_FLOAT. بالنسبة
إدخال متعدد القنوات، فإن الصفيفة متداخلة.
|
|---|