كيفية تسجيل الصوت والنسخ للتعرف على الكلام

يمكنك تمكين التسجيل لكل من إدخال الصوت والكلام المتعرف عليه عند استخدام ترجمة الكلام إلى نص أو كلام. بالنسبة لترجمة الكلام، يتم تسجيل الصوت وكتابة الصوت الأصلي فقط. لا يتم تسجيل الترجمات. توضح هذه المقالة كيفية تمكين سجلات الصوت والنسخ والوصول إليها وحذفها.

يمكن استخدام سجلات الصوت والنسخ كمدخل لتدريب نموذج الكلام المخصص. قد يكون لديك حالات استخدام أخرى.

تحذير

لا تعتمد على سجلات الصوت والنسخ عندما يكون السجل الدقيق لصوت الإدخال مطلوبا. في فترات ذروة الحمل، تعطي الخدمة الأولوية لموارد الأجهزة لمهام النسخ. قد يؤدي ذلك إلى عدم تسجيل أجزاء ثانوية من الصوت. هذه المناسبات نادرة، ولكن مع ذلك ممكنة.

يتم التسجيل بشكل غير متزامن لكل من نقاط نهاية النموذج الأساسي والمخصص. تخزن خدمة Speech سجلات الصوت والنسخ في تخزينها الداخلي ولا تتم كتابتها محليا. يتم الاحتفاظ بالسجلات لمدة 30 يوما. بعد هذه الفترة، يتم حذف السجلات تلقائيا. ومع ذلك، يمكنك حذف سجلات معينة أو مجموعة من السجلات المتوفرة في أي وقت.

يمكنك أيضا تخزين سجلات الصوت والنسخ داخل حساب Azure Storage الذي تملكه وتتحكم فيه بدلا من أماكن خدمة الكلام باستخدام تقنية Bring-your-own-storage (BYOS ). راجع تفاصيل حول كيفية استخدام مورد الكلام الممكن بواسطة BYOS في هذه المقالة.

تمكين تسجيل الصوت والنسخ

يتم تعطيل التسجيل بشكل افتراضي. يمكن تمكين التسجيل لكل جلسة التعرف أو لكل نقطة نهاية نموذج مخصص.

تمكين التسجيل لجلسة التعرف واحدة

يمكنك تمكين التسجيل لجلسة تعرف واحدة، سواء باستخدام النموذج الأساسي الافتراضي أو نقطة نهاية النموذج المخصص.

تحذير

بالنسبة لنقاط نهاية النموذج المخصصة، يتم إعطاء الأولوية لإعداد التسجيل لنقطة النهاية المنشورة على إعداد مستوى الجلسة (SDK أو REST API). إذا تم تمكين التسجيل لنقطة نهاية النموذج المخصص، يتم تجاهل إعداد مستوى جلسة العمل (سواء تم تعيينه إلى صواب أو خطأ). إذا لم يتم تمكين التسجيل لنقطة نهاية النموذج المخصص، يحدد إعداد مستوى الجلسة ما إذا كان التسجيل نشطا أم لا.

تمكين تسجيل الكلام إلى نص باستخدام Speech SDK

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب EnableAudioLogging() مثيل فئة SpeechConfig .

speechConfig.EnableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

string isAudioLoggingEnabled = speechConfig.GetProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل SpeechRecognizer يستخدم هذا speechConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب EnableAudioLogging مثيل فئة SpeechConfig .

speechConfig->EnableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

string isAudioLoggingEnabled = speechConfig->GetProperty(PropertyId::SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل SpeechRecognizer يستخدم هذا speechConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enableAudioLogging() مثيل فئة SpeechConfig .

speechConfig.enableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

String isAudioLoggingEnabled = speechConfig.getProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل SpeechRecognizer يستخدم هذا speechConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enableAudioLogging() مثيل فئة SpeechConfig .

speechConfig.enableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

var SpeechSDK;
SpeechSDK = speechSdk;
// <...>
string isAudioLoggingEnabled = speechConfig.getProperty(SpeechSDK.PropertyId.SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل SpeechRecognizer يستخدم هذا speechConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enable_audio_logging مثيل فئة SpeechConfig .

speech_config.enable_audio_logging()

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

import azure.cognitiveservices.speech as speechsdk
# <...>
is_audio_logging_enabled = speech_config.get_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_EnableAudioLogging)

تم تمكين تسجيل الصوت والنسخ لكل SpeechRecognizer يستخدم هذا speech_config .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enableAudioLogging مثيل فئة SPXSpeechConfiguration .

[speechConfig enableAudioLogging];

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SPXSpeechServiceConnectionEnableAudioLogging :

NSString *isAudioLoggingEnabled = [speechConfig getPropertyById:SPXSpeechServiceConnectionEnableAudioLogging];

تم تمكين تسجيل الصوت والنسخ لكل SpeechRecognizer يستخدم هذا speechConfig .

تمكين تسجيل ترجمة الكلام باستخدام Speech SDK

بالنسبة لترجمة الكلام، يتم تسجيل الصوت وكتابة الصوت الأصلي فقط. لا يتم تسجيل الترجمات.

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب EnableAudioLogging() مثيل فئة SpeechTranslationConfig .

speechTranslationConfig.EnableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

string isAudioLoggingEnabled = speechTranslationConfig.GetProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل TranslationRecognizer يستخدم هذا speechTranslationConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب EnableAudioLogging مثيل فئة SpeechTranslationConfig .

speechTranslationConfig->EnableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

string isAudioLoggingEnabled = speechTranslationConfig->GetProperty(PropertyId::SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل TranslationRecognizer يستخدم هذا speechTranslationConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enableAudioLogging() مثيل فئة SpeechTranslationConfig .

speechTranslationConfig.enableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

String isAudioLoggingEnabled = speechTranslationConfig.getProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل TranslationRecognizer يستخدم هذا speechTranslationConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enableAudioLogging() مثيل فئة SpeechTranslationConfig .

speechTranslationConfig.enableAudioLogging();

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

var SpeechSDK;
SpeechSDK = speechSdk;
// <...>
string isAudioLoggingEnabled = speechTranslationConfig.getProperty(SpeechSDK.PropertyId.SpeechServiceConnection_EnableAudioLogging);

تم تمكين تسجيل الصوت والنسخ لكل TranslationRecognizer يستخدم هذا speechTranslationConfig .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enable_audio_logging مثيل فئة SpeechTranslationConfig .

speech_translation_config.enable_audio_logging()

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SpeechServiceConnection_EnableAudioLogging :

import azure.cognitiveservices.speech as speechsdk
# <...>
is_audio_logging_enabled = speech_translation_config.get_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_EnableAudioLogging)

تم تمكين تسجيل الصوت والنسخ لكل TranslationRecognizer يستخدم هذا speech_translation_config .

لتمكين تسجيل الصوت والنسخ باستخدام Speech SDK، يمكنك تنفيذ أسلوب enableAudioLogging مثيل فئة SPXSpeechTranslationConfiguration .

[speechTranslationConfig enableAudioLogging];

للتحقق مما إذا كان التسجيل ممكنا، احصل على قيمة الخاصية SPXSpeechServiceConnectionEnableAudioLogging :

NSString *isAudioLoggingEnabled = [speechTranslationConfig getPropertyById:SPXSpeechServiceConnectionEnableAudioLogging];

تم تمكين تسجيل الصوت والنسخ لكل TranslationRecognizer يستخدم هذا speechTranslationConfig .

تمكين تسجيل الكلام إلى نص REST API للصوت القصير

إذا كنت تستخدم Speech to text REST API للصوت القصير وتريد تمكين تسجيل الصوت والنسخ، تحتاج إلى استخدام معلمة الاستعلام والقيمة storeAudio=true كجزء من طلب REST. يبدو نموذج الطلب كما يلي:

https://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&storeAudio=true

تمكين تسجيل الصوت والنسخ لنقطة نهاية نموذج مخصص

ينطبق هذا الأسلوب على نقاط نهاية الكلام المخصصة فقط.

يمكن تمكين التسجيل أو تعطيله في إعدادات نقطة نهاية النموذج المخصص الثابتة. عند تمكين التسجيل (تشغيل) لنقطة نهاية نموذج مخصص، فلن تحتاج إلى تمكين التسجيل على مستوى جلسة التعرف باستخدام SDK أو REST API. حتى عندما لا يتم تمكين التسجيل لنقطة نهاية نموذج مخصص، يمكنك تمكين التسجيل مؤقتا على مستوى جلسة التعرف باستخدام SDK أو REST API.

تحذير

بالنسبة لنقاط نهاية النموذج المخصصة، يتم إعطاء الأولوية لإعداد التسجيل لنقطة النهاية المنشورة على إعداد مستوى الجلسة (SDK أو REST API). إذا تم تمكين التسجيل لنقطة نهاية النموذج المخصص، يتم تجاهل إعداد مستوى جلسة العمل (سواء تم تعيينه إلى صواب أو خطأ). إذا لم يتم تمكين التسجيل لنقطة نهاية النموذج المخصص، يحدد إعداد مستوى الجلسة ما إذا كان التسجيل نشطا أم لا.

يمكنك تمكين تسجيل الصوت والنسخ لنقطة نهاية نموذج مخصص:

  • عند إنشاء نقطة النهاية باستخدام Speech Studio أو REST API أو Speech CLI. للحصول على تفاصيل حول كيفية تمكين التسجيل لنقطة نهاية كلام مخصصة، راجع نشر نموذج كلام مخصص.
  • عند تحديث نقطة النهاية (Endpoints_Update) باستخدام Speech to text REST API. للحصول على مثال حول كيفية تحديث إعداد التسجيل لنقطة نهاية، راجع إيقاف تشغيل التسجيل لنقطة نهاية نموذج مخصص. ولكن بدلا من تعيين الخاصية contentLoggingEnabled إلى false، قم بتعيينها إلى true لتمكين تسجيل نقطة النهاية.

إيقاف تشغيل التسجيل لنقطة نهاية نموذج مخصص

لتعطيل تسجيل الصوت والنسخ لنقطة نهاية نموذج مخصصة، يجب تحديث إعداد تسجيل نقطة النهاية المستمرة باستخدام Speech to text REST API. لا توجد طريقة لتعطيل التسجيل لنقطة نهاية نموذج مخصص موجودة باستخدام Speech Studio.

لإيقاف تشغيل التسجيل لنقطة نهاية مخصصة، استخدم عملية Endpoints_Update من Speech to text REST API. إنشاء نص الطلب وفقًا للإرشادات التالية:

  • تعيين الخاصية contentLoggingEnabled داخل properties. قم بتعيين هذه الخاصية إلى true لتمكين تسجيل نسبة استخدام الشبكة لنقطة النهاية. قم بتعيين هذه الخاصية إلى false لتعطيل تسجيل نسبة استخدام الشبكة لنقطة النهاية.

يمكنك تقديم طلب HTTP PATCH باستخدام URI كما هو موضح في المثال التالي. استبدل YourSubscriptionKey بمفتاح مورد الكلام، واستبدل YourServiceRegion بمنطقة موارد الكلام، واستبدل YourEndpointId بمعرف نقطة النهاية، وقم بتعيين خصائص نص الطلب كما هو موضح سابقاً.

curl -v -X PATCH -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "properties": {
    "contentLoggingEnabled": false
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/YourEndpointId"

يجب أن تتلقى نص الاستجابة بالتنسيق التالي:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/71b46720-995d-4038-a331-0317e9e7a02f"
  },
  "links": {
    "logs": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2/files/logs",
    "restInteractive": "https://eastus.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "restConversation": "https://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "restDictation": "https://eastus.stt.speech.microsoft.com/speech/recognition/dictation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "webSocketInteractive": "wss://eastus.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "webSocketConversation": "wss://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "webSocketDictation": "wss://eastus.stt.speech.microsoft.com/speech/recognition/dictation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/122fd2f7-1d3a-4404-885d-2b24a2a187e8"
  },
  "properties": {
    "loggingEnabled": false
  },
  "lastActionDateTime": "2023-03-28T23:03:15Z",
  "status": "Succeeded",
  "createdDateTime": "2023-03-28T23:02:40Z",
  "locale": "en-US",
  "displayName": "My Endpoint",
  "description": "My Endpoint Description"
}

يجب أن يعكس نص الاستجابة الإعداد الجديد. يختلف اسم خاصية التسجيل في الاستجابة (loggingEnabled) عن اسم خاصية التسجيل التي قمت بتعيينها في الطلب (contentLoggingEnabled).

الحصول على سجلات الصوت والنسخ

يمكنك الوصول إلى سجلات الصوت والنسخ باستخدام Speech to text REST API. بالنسبة لنقاط نهاية النموذج المخصصة، يمكنك أيضا استخدام Speech Studio. راجع التفاصيل في الأقسام التالية.

إشعار

يتم الاحتفاظ ببيانات التسجيل لمدة 30 يوما. بعد هذه الفترة، يتم حذف السجلات تلقائيا. ومع ذلك، يمكنك حذف سجلات معينة أو مجموعة من السجلات المتوفرة في أي وقت.

الحصول على سجلات الصوت والنسخ باستخدام Speech Studio

ينطبق هذا الأسلوب على نقاط نهاية النموذج المخصصة فقط.

لتنزيل سجلات نقطة النهاية:

  1. سجّل الدخول إلـى Speech Studio.
  2. حدد الكلام> المخصص اسم >المشروع نشر النماذج.
  3. حدد الارتباط باسم نقطة النهاية.
  4. ضمن Content logging، حدد Download log.

باستخدام هذا الأسلوب، يمكنك تنزيل جميع مجموعات السجلات المتوفرة في وقت واحد. لا توجد طريقة لتنزيل مجموعات السجلات المحددة في Speech Studio.

الحصول على سجلات الصوت والنسخ باستخدام Speech to text REST API

يمكنك تنزيل جميع مجموعات السجلات المتوفرة أو مجموعة فرعية منها.

ينطبق هذا الأسلوب على نقاط نهاية النموذج الأساسي والمخصص. لسرد سجلات الصوت والنسخ وتنزيلها:

  • النماذج الأساسية: استخدم Endpoints_ListBaseModelLogs تشغيل Speech to text REST API. تحصل هذه العملية على قائمة سجلات الصوت والنسخ المخزنة عند استخدام النموذج الأساسي الافتراضي للغة معينة.
  • نقاط نهاية النموذج المخصص: استخدم عملية Endpoints_ListLogs من Speech to text REST API. تحصل هذه العملية على قائمة سجلات الصوت والنسخ المخزنة لنقطة نهاية معينة.

الحصول على معرفات السجل باستخدام Speech to text REST API

في بعض السيناريوهات، قد تحتاج إلى الحصول على معرفات السجلات المتوفرة. على سبيل المثال، قد تحتاج إلى حذف سجل معين كما هو موضح لاحقا في هذه المقالة.

للحصول على معرفات السجلات المتوفرة:

  • النماذج الأساسية: استخدم Endpoints_ListBaseModelLogs تشغيل Speech to text REST API. تحصل هذه العملية على قائمة سجلات الصوت والنسخ المخزنة عند استخدام النموذج الأساسي الافتراضي للغة معينة.
  • نقاط نهاية النموذج المخصص: استخدم عملية Endpoints_ListLogs من Speech to text REST API. تحصل هذه العملية على قائمة سجلات الصوت والنسخ المخزنة لنقطة نهاية معينة.

فيما يلي عينة إخراج Endpoints_ListLogs. للتبسيط، يتم عرض مجموعة سجل واحدة فقط:

{
  "values": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json",
      "name": "163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9.v2.json",
      "kind": "Transcription",
      "properties": {
        "size": 79920
      },
      "createdDateTime": "2023-03-13T16:37:15Z",
      "links": {
        "contentUrl": "<Link to download log file>"
      }
    },
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_wav",
      "name": "163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9.wav",
      "kind": "Audio",
      "properties": {
        "size": 932966
      },
      "createdDateTime": "2023-03-13T16:37:15Z",
      "links": {
        "contentUrl": "<Link to download log file>"
      }
    }
  ]
}

يتم إرجاع مواقع كل ملف سجل صوت وكتابة في نص الاستجابة. راجع الخاصية المقابلة kind لتحديد ما إذا كان الملف يتضمن الصوت ("kind": "Audio") أو النسخ ("kind": "Transcription").

معرف السجل لكل ملف سجل هو الجزء الأخير من عنوان URL في "self" قيمة العنصر. معرف السجل في المثال التالي هو 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json.

"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json"

حذف سجلات الصوت والنسخ

يتم الاحتفاظ ببيانات التسجيل لمدة 30 يوما. بعد هذه الفترة، يتم حذف السجلات تلقائيا. ومع ذلك، يمكنك حذف سجلات معينة أو مجموعة من السجلات المتوفرة في أي وقت.

بالنسبة لأي نقطة نهاية نموذج أساسي أو مخصص، يمكنك حذف جميع السجلات المتوفرة أو السجلات لإطار زمني معين أو سجل معين استنادا إلى معرف السجل الخاص به. تتم عملية الحذف بشكل غير متزامن ويمكن أن تستغرق دقائق أو ساعات أو يوما واحدا أو أكثر اعتمادا على عدد ملفات السجل.

لحذف سجلات الصوت والنسخ، يجب استخدام Speech to text REST API. لا توجد طريقة لحذف السجلات باستخدام Speech Studio.

حذف كافة السجلات أو السجلات لإطار زمني معين

لحذف جميع السجلات أو السجلات لإطار زمني معين:

اختياريا، قم بتعيين endDate حذف سجلات الصوت (يوم محدد، UTC). التنسيق المتوقع: "yyyy-mm-dd". على سبيل المثال، ينتج عن "2023-03-15" حذف جميع السجلات في 15 مارس 2023 وما قبله.

حذف سجل معين

لحذف سجل معين حسب المعرف:

للحصول على تفاصيل حول كيفية الحصول على معرفات السجل، راجع قسم سابق الحصول على معرفات السجل باستخدام Speech to text REST API.

نظرا لأن سجلات الصوت والنسخ تحتوي على معرفات منفصلة (مثل المعرفات 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json ومن 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_wav مثال سابق في هذه المقالة)، عندما تريد حذف كل من سجلات الصوت والنسخ تقوم بتنفيذ حذف منفصل بواسطة طلبات المعرف.

الخطوات التالية