# Wav2Vec2Phoneme

## نظرة عامة

قُدِّم نموذج Wav2Vec2Phoneme في [التعرف على الأصوات عبر اللغات بدون تدريب (Xu et al., 2021)](https://huggingface.co/papers/2109.11680) بواسطة Qiantong Xu وAlexei Baevski وMichael Auli.

المستخلص من الورقة البحثية هو كالتالي:

*أتاح التقدم الأخير في التدريب الذاتي والتدريب المسبق غير المُشرَّح والتعلم غير المُشرَّح أنظمةً عالية الأداء للتعرف على الكلام دون الحاجة إلى أي بيانات مُوسومة. ومع ذلك، في كثير من الحالات، تتوفر بيانات مُوسومة للغات ذات صلة لا تستفيد منها هذه الأساليب. يوسّع هذا العمل السابق حول التعلّم التحويلي بين اللغات بدون أي بيانات تدريبية (Zero-shot) من خلال ضبط نموذج wav2vec 2.0 المُدرَّب مسبقًا متعدد اللغات لتحويل نصوص لغات غير مرئية. يتم ذلك عن طريق خرائط الفونيمات للغات التدريب إلى اللغة المستهدفة باستخدام السمات النطقية. تُظهر التجارب أن هذه الطريقة البسيطة تتفوق بشكل كبير على الأعمال السابقة التي قدّمت بنية معمارية خاصة بالمهمة واستخدمت جزءًا فقط من نموذج مُدرَّب مسبقًا أحادي اللغة.*

يمكن العثور على نقاط التفتيش ذات الصلة تحت https://huggingface.co/models?other=phoneme-recognition.

تمت مساهمة هذا النموذج من قِبل [patrickvonplaten](https://huggingface.co/patrickvonplaten)

يمكن العثور على الكود الأصلي [هنا](https://github.com/pytorch/fairseq/tree/master/fairseq/models/wav2vec).

## نصائح للاستخدام

- يستخدم Wav2Vec2Phoneme نفس البنية المعمارية تمامًا مثل Wav2Vec2
- Wav2Vec2Phoneme هو نموذج كلامي يقبل مصفوفة من الأرقام العشرية (float) تتوافق مع الموجة الخام لإشارة الكلام.
- تم تدريب نموذج Wav2Vec2Phoneme باستخدام التصنيف الزمني المتصل (CTC)، لذا يجب فك ترميز مخرجات النموذج باستخدام [Wav2Vec2PhonemeCTCTokenizer](/docs/transformers/main/ar/model_doc/wav2vec2_phoneme#transformers.Wav2Vec2PhonemeCTCTokenizer).
- يمكن ضبط Wav2Vec2Phoneme على عدة لغات في وقت واحد، وفكّ لغات غير مرئية في تمريرة أمامية واحدة إلى تسلسل من الأصوات.
- بشكل افتراضي، يُخرج النموذج تسلسلاً من الأصوات. ولتحويل هذه الأصوات إلى تسلسل من الكلمات، يجب الاستعانة بقاموس ونموذج لغوي.

تعتمد بنية Wav2Vec2Phoneme على نموذج Wav2Vec2، وللاطلاع على مرجع واجهة برمجة التطبيقات، راجع صفحة توثيق [`Wav2Vec2`](wav2vec2) باستثناء مُجزّئ الرموز.

## Wav2Vec2PhonemeCTCTokenizer[[transformers.Wav2Vec2PhonemeCTCTokenizer]]

#### transformers.Wav2Vec2PhonemeCTCTokenizer[[transformers.Wav2Vec2PhonemeCTCTokenizer]]

```python
transformers.Wav2Vec2PhonemeCTCTokenizer(vocab_file, bos_token = '<s>', eos_token = '</s>', unk_token = '<unk>', pad_token = '<pad>', phone_delimiter_token = ' ', word_delimiter_token = None, do_phonemize = True, phonemizer_lang = 'en-us', phonemizer_backend = 'espeak', **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_phoneme/tokenization_wav2vec2_phoneme.py#L71)

**المعاملات:**

vocab_file (`str`) : ملف يحتوي على المفردات.

bos_token (`str`، *اختياري*، الافتراضي `"<s>"`) : رمز بداية الجملة.

eos_token (`str`، *اختياري*، الافتراضي `"</s>"`) : رمز نهاية الجملة.

unk_token (`str`، *اختياري*، القيمة الافتراضية `"<unk>"`) : رمز المجهول. الرمز غير الموجود في قاموس الكلمات لا يمكن تحويله إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه.

pad_token (`str`، *اختياري*، القيمة الافتراضية هي `"<pad>"`) : الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة.

do_phonemize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب على مُجزِّئ النص (tokenizer) تحويل المدخلات إلى أصوات أم لا. فقط إذا تم تمرير سلسلة من الأصوات (phonemes) إلى مُجزِّئ النص، يجب تعيين `do_phonemize` إلى `False`.

phonemizer_lang (`str`، *اختياري*، القيمة الافتراضية `"en-us"`) : لغة مجموعة الأصوات التي يجب على مُجزِّئ النص تحويل النص المدخل إليها صوتياً.

phonemizer_backend (`str`، *اختياري*. القيمة الافتراضية هي `"espeak"`) : مكتبة التحويل الصوتي الخلفية التي يجب أن تستخدمها مكتبة phonemizer. القيمة الافتراضية هي `espeak-ng`. راجع [حزمة phonemizer](https://github.com/bootphon/phonemizer#readme) لمزيد من المعلومات.

- ****kwargs** : حُجج إضافية تُمرَّر إلى [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend)

ينشئ مُجزِّئ Wav2Vec2PhonemeCTC.

يرث هذا المُجزِّئ من [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) الذي يحتوي على بعض الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى الفئة الأصلية لمزيد من المعلومات حول هذه الطرق.

#### __call__[[transformers.Wav2Vec2PhonemeCTCTokenizer.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2449)

**المعاملات:**

text (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُجزَّأ مسبقًا). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُجزَّأة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

text_pair (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُجزَّأ مسبقًا). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُجزَّأة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

text_target (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسمة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

text_pair_target (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسمة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

tokenizer_kwargs (`dict[str, Any]`، *اختياري*) : معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ الرموز (tokenizer). سيتم دمج هذه المعاملات مع المعاملات الصريحة وغيرها من المعاملات الإضافية، مع إعطاء الأولوية للمعاملات الصريحة.

add_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسية `PretrainedTokenizerBase.build_inputs_with_special_tokens`، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. وهذا مفيد إذا كنت ترغب في إضافة رموز `bos` أو `eos` تلقائيًا.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية هي `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية:  - `True` أو `'longest_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى القص رمزًا تلو الآخر، مع إزالة رمز من أطول تسلسل في الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الأول من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_second'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الثاني من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `False` أو `'do_not_truncate'` (الافتراضي): لا يوجد قص (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

stride (`int`، *اختياري*، القيمة الافتراضية 0) : إذا تم تعيينه إلى رقم مع `max_length`، فإن الرموز الزائدة المُعاد عند `return_overflowing_tokens=True` ستحتوي على بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة.

is_split_into_words (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت المدخلات مُجزّأة مسبقًا (مثل تقسيمها إلى كلمات) أم لا. إذا تم ضبطها على `True`، يفترض المُجزّئ أن المدخلات مُقسّمة مسبقًا إلى كلمات (على سبيل المثال، عن طريق تقسيمها على المسافات) وسيُجزّئها. هذا مفيد في مهام تحديد الكيانات الاسمية أو تصنيف الرموز.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. يتطلب تفعيل `padding`. وهذا مفيد بشكل خاص لتمكين استخدام نوى التENSOR على أجهزة NVIDIA التي تتمتع بقابلية حسابية `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

return_token_type_ids (`bool`، *اختياري*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية `return_outputs`.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقاً للقيمة الافتراضية الخاصة بمجزّئ الرموز المعني، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

return_overflowing_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع تسلسلات الرموز المتجاوزة أم لا. إذا تم تقديم زوج من تسلسلات معرّفات الإدخال (أو دفعة من الأزواج) مع `truncation_strategy = longest_first` أو `True`، فسيتم رفع خطأ بدلاً من إرجاع الرموز المتجاوزة.

return_special_tokens_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع معلومات قناع الرموز الخاصة أم لا.

return_offsets_mapping (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع `(char_start, char_end)` لكل رمز. هذه الخاصية متاحة فقط في مُرمّزيات fast التي ترث من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)، وإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة `NotImplementedError`.

return_length (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.

verbose (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب طباعة مزيد من المعلومات والتنبيهات أم لا.

- ****kwargs** : تُمرَّر إلى طريقة `self.tokenize()`

**يعيد:** [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding) يحتوي على الحقول التالية:

- **input_ids** -- قائمة معرّفات الرموز المراد تغذيتها إلى النموذج.

  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

- **token_type_ids** -- قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون `return_token_type_ids=True` أو إذا كان *"token_type_ids"* ضمن `self.model_input_names`).

  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

- **attention_mask** -- قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون `return_attention_mask=True` أو إذا كان *"attention_mask"* ضمن `self.model_input_names`).

  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

- **overflowing_tokens** -- قائمة تسلسلات الرموز الزائدة (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **num_truncated_tokens** -- عدد الرموز التي تم اقتطاعها (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **special_tokens_mask** -- قائمة من الأصفار والواحدات، حيث تشير 1 إلى الرموز الخاصة المضافة وتُشير 0 إلى رموز التسلسل العادية (عندما تكون `add_special_tokens=True` و`return_special_tokens_mask=True`).
- **length** -- طول المدخلات (عندما يكون `return_length=True`)

الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.

#### batch_decode[[transformers.Wav2Vec2PhonemeCTCTokenizer.batch_decode]]

```python
batch_decode(sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')], skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, output_char_offsets: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_phoneme/tokenization_wav2vec2_phoneme.py#L505)

**المعاملات:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : قائمة معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة `__call__`.

skip_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.

clean_up_tokenization_spaces (`bool`، *اختياري*) : ما إذا كان سيتم تنظيف مسافات الترميز الرمزي أم لا.

output_char_offsets (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إخراج إزاحات الأحرف أم لا. يمكن استخدام إزاحات الأحرف بالاقتران مع معدل العينة ومعدل تخفيض عينة النموذج لحساب الطوابع الزمنية للأحرف المنقولة. يُرجى الاطلاع على مثال `~models.wav2vec2.tokenization_wav2vec2.decode` لفهم كيفية الاستفادة من `output_word_offsets` بشكل أفضل. يعمل `~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decode` بشكل مشابه مع الأصوات (Phonemes) والإخراج الدُفعي.

kwargs (حجج كلمات مفتاحية إضافية، *اختيارية*) : سيتم تمريرها إلى طريقة فك الترميز الخاصة بالنموذج الأساسي.

**يعيد:** `list[str]` أو `~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput`

الجملة المُفكَّكة. ستكون من نوع `~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput` عندما يكون `output_char_offsets == True`.

تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.

#### فك الترميز[[transformers.Wav2Vec2PhonemeCTCTokenizer.decode]]

```python
decode(token_ids: typing.Union[int, list[int], numpy.ndarray, ForwardRef('torch.Tensor')], skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, output_char_offsets: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_phoneme/tokenization_wav2vec2_phoneme.py#L449)

**المعاملات:**

token_ids (`Union[int, list[int], np.ndarray, torch.Tensor]`) : قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة `__call__`.

skip_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.

clean_up_tokenization_spaces (`bool`، *اختياري*) : ما إذا كان سيتم تنظيف مسافات الترميز الرمزي أم لا.

output_char_offsets (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إخراج إزاحات الأحرف أم لا. يمكن استخدام إزاحات الأحرف بالاقتران مع معدل العينة ومعدل تخفيض عينة النموذج لحساب الطوابع الزمنية للأحرف المنقولة. يُرجى الاطلاع على مثال `~models.wav2vec2.tokenization_wav2vec2.decode` لفهم كيفية الاستفادة من `output_word_offsets` بشكل أفضل. يعمل `~model.wav2vec2_phoneme.tokenization_wav2vec2_phoneme.batch_decode` بنفس الطريقة مع الأصوات.

kwargs (حجج كلمات مفتاحية إضافية، *اختيارية*) : سيتم تمريرها إلى طريقة فك الترميز الخاصة بالنموذج الأساسي.

**يعيد:** `str` أو `~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput`

الجملة المُفكَّكة. ستكون من نوع `~models.wav2vec2.tokenization_wav2vec2_phoneme.Wav2Vec2PhonemeCTCTokenizerOutput` عندما يكون `output_char_offsets == True`.

يحوّل تسلسلًا من المعرّفات في نص، باستخدام مُجزّئ الرموز (tokenizer) وقاموس الرموز، مع خيارات لإزالة الرموز الخاصة وتنظيف مسافات تجزئة الرموز.

يشبه ذلك القيام بـ `self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))`.

#### phonemize[[transformers.Wav2Vec2PhonemeCTCTokenizer.phonemize]]

```python
phonemize(text: str, phonemizer_lang: str | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_phoneme/tokenization_wav2vec2_phoneme.py#L253)

