Audio Generation2016متوسط12 دقيقة قراءة

WaveNet: نموذج توليدي للصوت الخام

WaveNet: A Generative Model for Raw Audio

van den Oord, A. · Dieleman, S. · Zen, H. · Simonyan, K. · Vinyals, O. · Graves, A. · Kalchbrenner, N. · Senior, A. · Kavukcuoglu, K. — SSW (ISCA)

المشكلة

قبل WaveNet كان توليد الكلام يعتمد على أسلوبين: الأول يلصق مقاطع صوتية مسجّلة مسبقاً فتخرج الوصلات بينها آلية ومزعجة، والثاني يولّد الصوت من نماذج إحصائية لخصائص الصوت فيكون الكلام الناتج مكتوماً وغير طبيعي. كلا الأسلوبين يشتغل على سمات صوتية مصمَّمة يدوياً ولا يمسّ الإشارة الخام أبداً. توليد الموسيقى واجه القيود نفسها. والتحدّي أن الصوت الخام ذو دقّة زمنية هائلة — 16,000 عيّنة في الثانية على الأقل — وكل عيّنة قد تأخذ أيّ قيمة من 65,536 قيمة ممكنة (16 بت). لم تنجح أي شبكة عصبية في نمذجة تسلسلات بهذا الحجم من قبل.

الإسهام

WaveNet: شبكة عصبية احتمالية بالكامل تولّد الصوت الخام عيّنةً بعيّنة بأسلوب ذاتي الانحدار. تعتمد على طبقات من الالتفافات السببية المتوسِّعة تبني حقل استقبال أُسّي الاتساع بعدد قليل من الطبقات، ووحدات تنشيط بوّابية مستوحاة من LSTM، وضغط mu-law لاختزال 65,536 قيمة إلى 256 فئة يمكن التعامل معها. الاتصالات المتبقية واتصالات التخطي تسمح شبكات عميقة جداً. حين يُغذَّى النموذج بسمات نصية يحقّق أفضل جودة في ، وحين يُدرَّب على موسيقى يولّد مقاطع موسيقية جديدة وواقعية.

الأثر

أثبت WaveNet أن الشبكات العصبية قادرة على نمذجة الصوت الخام على مستوى العيّنة بجودة لم يسبق لها مثيل. تبنّته Google في خدمتها السحابية لتحويل النص إلى كلام، وألهم بشكل مباشر العصبي في Tacotron 2 وParallel WaveNet للتوليد اللحظي وJukebox من OpenAI لتوليد الموسيقى. بنيته القائمة على الالتفافات المتوسِّعة صارت لبنة معمارية أساسية في معالجة الصوت ونمذجة السلاسل الزمنية.

تخيّل أنظمة توليد الكلام التقليدية كـفنّان كولاج: يأخذ مقاطع صوتية مسجَّلة من قبل ويلصقها بجانب بعضها، ويأمل ألّا يلاحظ أحدٌ مواضع اللصق. أو فكِّر فيها كـلوحة تلوين بالأرقام — تملأ أنماطاً جاهزة تبدو ظاهرياً ككلام، لكنها لا تُقنع الأذن أبداً.

WaveNet يشبه أكثر رسّاماً تنقيطياً: يضع نقطة صغيرة واحدة في كل لحظة، ويختار موضعها بعد أن يدرس كل نقطة رسمها من قبل. لو اقتربتَ كثيراً لن ترى سوى نقاط — 16,000 نقطة في الثانية الواحدة. لكن ابتعد قليلاً وستسمع صوت إنسان حقيقي.

المشكلة: آلات تتكلّم لكنّها لا تبدو حقيقية

قبل WaveNet، كان توليد الكلام يستند إلى أسلوبين، ولكلٍّ منهما عيب جوهري:

  • التخليق بالوصل — يأخذ مقاطع قصيرة من كلام بشري مسجَّل ويلصقها ببعضها. الجودة ممتازة داخل كل مقطع، لكن عند نقاط الوصل تظهر تشوّهات واضحة للأذن. ويحتاج النظام إلى قاعدة بيانات ضخمة من التسجيلات، ولا يستطيع إنتاج أي شيء خارج ما سُجِّل مسبقاً.

  • التخليق الحدودي — يستخدم نموذجاً إحصائياً (عادةً ) لتوليد سمات صوتية كالنبرة والأغلفة الطيفية، ثم يمرّرها إلى مشفِّر صوتي يحوّلها إلى موجة مسموعة. هذا الأسلوب أسرع وأكثر مرونة، لكن الصوت الناتج يبدو مكتوماً وآلياً لأن المشفِّر الصوتي يعتمد افتراضات مبسَّطة — مثلاً يفترض أن الإشارة الصوتية تتبع توزيعاً غاوسياً، وهذا لا ينطبق على الكلام الحقيقي.

كلا الأسلوبين يشتغل على سمات مُهندَسة يدوياً ولا يقترب من الخام. الفلسفة في الحالتين أن الصوت شيء يُجمَّع من قِطع جاهزة، لا شيء يُولَّد من الصفر. والمشكلة الأعمق أن الصوت الخام مرعب الأبعاد: بمعدّل أخذ عيّنات 16 كيلوهرتز، الثانية الواحدة تعني تسلسلاً من 16,000 عيّنة، وكل واحدة منها قد تأخذ أيّ قيمة من 65,536 قيمة ممكنة. لم تنجح أي في توليد تسلسلات بهذا الطول وهذه الدقّة.

افتح في المختبر
قارن بين التخليق بالوصل (وصلات متقطّعة) وتوليد WaveNet السلس على مستوى العيّنة.
تستيقظ التجربة عند وصولك…

الفكرة الجوهرية: توقَّع عيّنة واحدة في كل مرة

يستعير WaveNet فكرته الأساسية من PixelCNN: بدلاً من محاولة نمذجة توزيع معقّد دفعة واحدة، فكِّكه إلى سلسلة من التوزيعات الشرطية البسيطة. فإذا كان لدينا شكل موجي صوتي x={x1,x2,,xT}\mathbf{x} = \{x_1, x_2, \ldots, x_T\}، يمكن تفكيك الاحتمال المشترك على النحو التالي:

p(x)=t=1Tp(xtx1,,xt1)p(\mathbf{x}) = \prod_{t=1}^{T} p(x_t \mid x_1, \ldots, x_{t-1})
التفكيك الذاتي الانحداري — تطبيق قاعدة السلسلة الاحتمالية على الصوتكل عيّنة تعتمد على جميع العيّنات التي سبقتها. يتعلّم النموذج أن يُخرج توزيعاً فئوياً على 256 قيمة ممكنة للعيّنة التالية، بناءً على كل ما جاء قبلها.

تخيّل الأمر كـراوٍ للقصص لا يقفز أبداً إلى ما سيحدث لاحقاً: كل كلمة (أي كل عيّنة) يختارها وهو يعرف كل ما قيل قبلها، لكنه لا يطّلع أبداً على ما سيأتي بعدها. هذا بالضبط ما يجعل النموذج — كل تنبّؤ يعتمد حصرياً على الماضي، فيحافظ على سببية زمنية صارمة.

لكن التحدّي الحقيقي هنا أن «قصة» الصوت تُروى بسرعة 16,000 كلمة في الثانية. كيف تمنح النموذج ذاكرة كافية عن الماضي دون أن تحتاج إلى شبكة بعمق مستحيل؟

الالتفافات السببية: ممنوع الاطّلاع على المستقبل

في القياسي، كل مخرج يستطيع أن يرى مدخلات من الجهتين — الماضي والمستقبل. هذا مقبول في مهام التصنيف مثلاً، لكنه كارثي في التوليد: لا يمكنك التنبّؤ بالعيّنة التالية إن كنتَ قد اطّلعتَ عليها سلفاً.

يحلّ هذا بإزاحة المرشّح بحيث لا ينظر إلا إلى اللحظة الحالية وما قبلها. المخرج عند الزمن tt يعتمد فقط على المدخلات عند t,t1,t2,t, t-1, t-2, \ldots ولا يرى t+1t+1 أبداً. فكِّر فيه كمرآة ذات اتجاه واحد: المعلومات تسير إلى الأمام عبر الزمن ولا تعود أبداً.

لكن هناك مشكلة: — أي عدد العيّنات الماضية التي يستطيع النموذج رؤيتها — ينمو خطّياً فقط مع عدد الطبقات. لو أردتَ أن يرى النموذج 1,024 عيّنة ماضية ستحتاج إلى 1,024 طبقة، وهذا غير عملي بالمرّة.

الالتفافات المتوسِّعة: ذاكرة أُسّية بطبقات خطّية

الابتكار المعماري الأساسي في WaveNet هو . الفكرة بسيطة: بدلاً من أن تقرأ كل طبقة عيّنات متتالية، تتخطّى عدداً ثابتاً من العيّنات بين كل مدخلَين. نمط التخطّي هذا — المسمّى — يتضاعف مع كل طبقة: 1، 2، 4، 8، 16، ...

تخيّل الأمر كطريق سريع فيه مخارج متعدّدة: الطبقة الأولى تتفقّد كل مخرج (توسيع 1)، والثانية تتفقّد مخرجاً من كل اثنين (توسيع 2)، والثالثة مخرجاً من كل أربعة (توسيع 4). بعد 10 طبقات فقط بحجم مرشّح 2، تستطيع الشبكة رؤية 210=1,0242^{10} = 1{,}024 عيّنة ماضية — ما يكفي لتغطية نحو 64 ميلي ثانية من الصوت عند 16 كيلوهرتز. كدِّس عدّة كتل من هذا النوع وستغطّي مئات الميلي ثوانٍ، وهذا أكثر من كافٍ لالتقاط إيقاع الكلام ومنحنيات النبرة وبنية المقاطع الصوتية.

هذا النمو الأُسّي هو الحيلة الجوهرية: عمق لوغاريتمي يعطيك حقل استقبال خطّياً. عشر طبقات فقط تمنحك المدى الذي تحتاج إليه ألف طبقة سببية عادية، بكُلفة لا تُقارن.

افتح في المختبر
شاهد كيف يتضاعف التوسيع مع كل طبقة فيبني حقل استقبال أُسّي الاتساع. قارن ذلك بالالتفافات السببية القياسية.
تستيقظ التجربة عند وصولك…
Receptive field=1+B×l=0L1(k1)×2l=1+B×(k1)×(2L1)\text{Receptive field} = 1 + B \times \sum_{l=0}^{L-1} (k-1) \times 2^l = 1 + B \times (k-1) \times (2^L - 1)
حجم حقل الاستقبال — نمو أُسّي بفضل التوسيعB = عدد كتل التوسيع · L = عدد الطبقات في كل كتلة · k = حجم المرشّح. بقيم B=1 وL=10 وk=2، يصبح حقل الاستقبال 1,024 — من 10 طبقات فقط.

ضغط μ-law: ترويض 65,536 قيمة

الصوت الخام يُخزَّن بأعداد صحيحة بعرض 16 بتاً، ما يعني أن كل عيّنة لها 65,536 قيمة محتملة. لو حاولتَ استخدام مخرج على 65,536 فئة لكانت الكُلفة الحسابية هائلة. الحل الذي اعتمده WaveNet هو — تحويل لاخطّي مستعار من عالم الاتصالات يضغط المدى كلّه إلى 256 قيمة فقط (8 بت).

والفكرة المفتاحية هنا أن أذن الإنسان تعمل بطريقة لوغاريتمية: الفرق بين شدّتَي صوت 100 و200 يبدو للأذن أكبر بكثير من الفرق بين 10,000 و10,100، مع أن الفارق العددي المطلق متساوٍ تماماً. ترميز μ-law يستغلّ هذه الخاصية فيخصّص دقة أعلى للأصوات الخافتة (حيث آذاننا حسّاسة جداً) ودقة أقل للأصوات العالية (حيث لا نكاد نميّز الفرق أصلاً).

f(xt)=sign(xt)ln(1+μxt)ln(1+μ)f(x_t) = \text{sign}(x_t) \frac{\ln(1 + \mu |x_t|)}{\ln(1 + \mu)}
تحويل ضغط μ-law (μ = 255)يضغط الإشارة بشكل لاخطّي: المناطق الهادئة تحصل على دقة عالية، والمناطق الصاخبة تُخشَّن. بعد تكميم الناتج إلى 256 سلّة، تتفوّق جودة إعادة البناء بفارق كبير على التكميم الخطّي البسيط.
افتح في المختبر
قارن بين التكميم الخطّي وتكميم μ-law. لاحظ كيف يحافظ μ-law على التفاصيل في المناطق الهادئة.
تستيقظ التجربة عند وصولك…

وحدات التنشيط البوّابية: تعلُّم ما يُحفظ وما يُهمل

البسيطة مثل ReLU تكفي لكثير من المهام، لكن توليد الصوت يحتاج إلى قدرة تعبيرية أكبر. لذلك استعار WaveNet آلية البوّابات من شبكات LSTM: كل طبقة تحسب تحويلَين متوازيَين على المدخل — مرشّح (tanh) يقترح المحتوى المراد إنتاجه، وبوّابة (sigmoid) تقرّر أيّ جزء من هذا المحتوى يُسمح له بالمرور. حاصل الضرب عنصراً بعنصر بين الاثنين يُعطينا المخرج النهائي.

تخيّل الأمر كاستوديو تسجيل: المرشّح هو العازف الذي يعزف كل النغمات الممكنة، والبوّابة هي مهندس الصوت الجالس أمام لوحة المزج يقرّر أيّ القنوات يرفع صوتها وأيّها يُسكتها. لا العازف وحده ولا المهندس وحده يستطيع إنتاج الصوت المطلوب — لكن معاً ينحتان المخرج بدقّة عالية.

z=tanh(Wf,kx)σ(Wg,kx)\mathbf{z} = \tanh(W_{f,k} * \mathbf{x}) \odot \sigma(W_{g,k} * \mathbf{x})
وحدة التنشيط البوّابيةWf,kW_{f,k} = التفاف المرشّح المُتعلَّم · Wg,kW_{g,k} = التفاف البوّابة المُتعلَّم · * = التفاف (متوسِّع) · \odot = ضرب عنصري. فرع tanh يقترح المحتوى، وفرع sigmoid يتحكّم في ما يمرّ.

الاتصالات المتبقية واتصالات التخطّي: ممرّات سريعة عبر الشبكات العميقة

WaveNet يستخدم عشرات الطبقات، والشبكات العميقة معروفة بصعوبة تدريبها — فمشكلة أو انفجارها تزداد سوءاً كلّما زاد عدد الطبقات التي تمرّ عبرها أثناء . يعالج WaveNet هذا بنوعين من الاختصارات:

  • تجمع مدخل كل كتلة مباشرةً مع مخرجها: output=f(x)+x\text{output} = f(\mathbf{x}) + \mathbf{x}. الأثر كأنك فتحتَ «ممرّاً سريعاً» يسمح للتدرّجات بالعبور دون عوائق. الكتلة لا تحتاج إلا لتعلّم الفرق — ما الذي ينبغي أن تُضيفه إلى المدخل — بدلاً من حساب التحويل الكامل من الصفر.

  • ترسل المخرج البوّابي لكل كتلة مباشرةً إلى الطبقات الأخيرة في الشبكة، متجاوزةً كل الكتل التي تليها. تصوَّر أن كل طبقة عميقة تفتح نافذة مباشرة إلى السطح، فلا تضيع إشاراتها وهي تمرّ عبر باقي الطبقات. في النهاية تُجمع كل إشارات التخطّي معاً وتُمرَّر عبر طبقتَي ReLU مع التفاف 1×1 ثم softmax للتنبّؤ بالعيّنة التالية.

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

افتح في المختبر
انقر على أيّ مكوّن لترى دوره. تتبّع مسار البيانات من المدخل عبر التنشيط البوّابي والجمع المتبقي ومسار التخطّي.
تستيقظ التجربة عند وصولك…

تجميع القطع معاً

بنية WaveNet الكاملة تجمع كل ما سبق في منظومة واحدة:

  1. المدخل: عيّنات صوتية خام مُرمَّزة بضغط μ-law إلى 256 قيمة، تدخل الشبكة على شكل متّجهات عبر التفاف سببي 1×1.

  2. الكتل المتبقية: رصّة من طبقات الالتفاف السببي المتوسِّع مع . كل كتلة تُنتج مسارَين: مسار متبقٍّ (يُضاف إلى المدخل ويُغذّي الكتلة التالية) ومسار تخطٍّ (يذهب مباشرةً إلى المخرج). معدّلات التوسيع تتضاعف مع كل طبقة: 1، 2، 4، ...، 512، ثم تبدأ الدورة من جديد وتُكرَّر عدّة مرات.

  3. المخرج: تُجمع كل اتصالات التخطّي، ثم تُمرَّر عبر ReLU ← التفاف 1×1 ← ReLU ← التفاف 1×1 ← softmax على 256 قيمة. الناتج توزيع احتمالي على العيّنة الصوتية التالية.

يُدرَّب النموذج على تعظيم لبيانات التدريب الصوتية. أمّا عند التوليد، فيسحب عيّنة من التوزيع المتوقَّع، ويعيدها كمدخل، ويكرّر العملية — عيّنة واحدة في كل خطوة.

افتح في المختبر
استكشف بنية WaveNet الكاملة. انقر على أي طبقة لمعرفة وظيفتها.
تستيقظ التجربة عند وصولك…

التكييف: كيف نعلِّم WaveNet ماذا يقول وبأيّ صوت

إذا درّبتَ WaveNet بدون أي ، سيولّد أصواتاً مثيرة للاهتمام لكنها عشوائية وغير موجَّهة — ثرثرة غير مفهومة وأنسجة صوتية محيطة. لجعله مفيداً عملياً، نحتاج إلى تزويده بمعلومات إضافية توجّه ما يولّده.

يدعم WaveNet نوعين من التكييف:

  • التكييف الشامل يضيف متّجه تكييف واحداً h\mathbf{h} — مثل هوية المتحدث — إلى كل طبقة. الأمر أشبه بأن تقول للنموذج «تكلَّم بصوت هذا الشخص بالذات» — تعليمة واحدة تسري على الشبكة بأكملها: z=tanh(Wfx+VfTh)σ(Wgx+VgTh)\mathbf{z} = \tanh(W_f * \mathbf{x} + V_f^T \mathbf{h}) \odot \sigma(W_g * \mathbf{x} + V_g^T \mathbf{h})

  • التكييف المحلي يزوّد النموذج بإشارة تتغيّر مع الزمن ht\mathbf{h}_t — كسمات لغوية أو إطارات من قادمة من واجهة تحويل النص إلى كلام. هذا يخبر النموذج ماذا يقول في كل لحظة بعينها: z=tanh(Wfx+Vfy)σ(Wgx+Vgy)\mathbf{z} = \tanh(W_f * \mathbf{x} + V_f * \mathbf{y}) \odot \sigma(W_g * \mathbf{x} + V_g * \mathbf{y}) حيث y\mathbf{y} هي إشارة التكييف بعد رفع معدّل عيّناتها لتطابق دقّة الصوت.

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

افتح في المختبر
تنقّل بين التوليد بدون تكييف، والتكييف الشامل، والتكييف المحلي.
تستيقظ التجربة عند وصولك…

الجوهر في شيفرة برمجية

الكتلة المتبقية في WaveNet مع التنشيط البوّابيpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import torch
import torch.nn as nn
import torch.nn.functional as F

class WaveNetResidualBlock(nn.Module):
    """كتلة متبقية واحدة: التفاف سببي متوسِّع ← تنشيط بوّابي ← مسار متبقٍّ + تخطٍّ."""

    def __init__(self, residual_channels, gate_channels, skip_channels, dilation):
        super().__init__()
        # التفاف سببي متوسِّع: حجم المرشّح=2، التوسيع يتضاعف مع كل طبقة
        self.conv = nn.Conv1d(
            residual_channels, gate_channels * 2,  # مخرجات المرشّح + البوّابة
            kernel_size=2, dilation=dilation, padding=0
        )
        self.res_conv = nn.Conv1d(gate_channels, residual_channels, 1)  # 1x1
        self.skip_conv = nn.Conv1d(gate_channels, skip_channels, 1)     # 1x1

    def forward(self, x):
        # حشو سببي: نضيف الحشو من الجهة اليسرى فقط
        pad = self.conv.dilation[0]
        x_padded = F.pad(x, (pad, 0))

        h = self.conv(x_padded)
        # نفصل الناتج إلى مرشّح (tanh) وبوّابة (sigmoid)
        h_filter, h_gate = h.chunk(2, dim=1)
        z = torch.tanh(h_filter) * torch.sigmoid(h_gate)

        skip = self.skip_conv(z)          # ← مخرج التخطّي (يذهب للطبقات الأخيرة)
        residual = self.res_conv(z) + x   # ← مخرج متبقٍّ (يذهب للكتلة التالية)
        return residual, skip

# نرصّ الكتل بتوسيع يتضاعف أُسّياً:
# التوسيع = [1, 2, 4, 8, ..., 512, 1, 2, 4, 8, ..., 512, ...]
# كل دورة تغطّي 2^10 = 1024 عيّنة من حقل الاستقبال.

النتائج: كيف يبدو صوت WaveNet

قُيِّم WaveNet في مهمّة تحويل النص إلى كلام بالإنجليزية والصينية الماندرينية، واستُخدم اختبار متوسط درجة الرأي (MOS) حيث يقيّم مستمعون بشريون طبيعية الصوت على مقياس من 1 (غير طبيعي إطلاقاً) إلى 5 (طبيعي تماماً). وجاءت النتائج لافتة للنظر:

بالإنجليزية حقّق WaveNet درجة 4.21، متفوّقاً بوضوح على التخليق بالوصل (3.86) والتخليق الحدودي (2.17). وبالماندرينية سجّل 4.08 مقابل 4.21 للوصل و2.98 للحدودي. كانت هذه أول مرة يُقلِّص فيها نموذج عصبي الفجوة بشكل جوهري مع الكلام البشري الطبيعي (الذي حصل على 4.55 بالإنجليزية).

ولم يقتصر الأمر على الكلام: حين دُرِّب WaveNet على موسيقى البيانو، ولّد مقاطع موسيقية جديدة التقطت جرس الآلة الواقعي وديناميكيات العزف، بل وبنية لحنية بدائية — كل ذلك دون أي هندسة مخصّصة للموسيقى.

افتح في المختبر
مقارنة متوسط درجات الرأي بين WaveNet وأساليب التخليق التقليدية.
تستيقظ التجربة عند وصولك…

لماذا غيَّر كل شيء

  1. 2016

    WaveNet

    نموذج ذاتي الانحدار على مستوى العيّنة للصوت الخام. الالتفافات السببية المتوسِّعة تمنحه حقل استقبال أُسّي الاتساع. أول نظام عصبي لتحويل النص إلى كلام يقترب من جودة الصوت البشري.

  2. 2017

    Parallel WaveNet

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

  3. 2017

    Tacotron 2

    جمع بين نموذج تسلسل-إلى-تسلسل لتحويل النص إلى مخطّط طيفي ومشفِّر صوتي WaveNet مُعدَّل. حقّق درجة MOS يكاد لا يُميَّز فيها عن الكلام البشري (4.53).

  4. 2018

    WaveGlow

    نموذج قائم على التدفّقات يجمع بين بنية بأسلوب WaveNet والتفافات 1×1 قابلة للعكس، ما يتيح توليد الكلام بالتوازي وفي الزمن الحقيقي دون الحاجة إلى تقطير.

  5. 2020

    Jukebox (OpenAI)

    وسّع التوليد الصوتي الذاتي الانحداري ليشمل أغاني كاملة — دقائق من الموسيقى مع غناء وكلمات وتكييف على الأسلوب، بناءً على المبادئ الجوهرية لـ WaveNet.

  6. 2021

    خدمة Google السحابية لتحويل النص إلى كلام بأصوات WaveNet

    أصبحت أصوات WaveNet متاحة تجارياً بعشرات اللغات، وبات تخليق الكلام العصبي في متناول ملايين المطوّرين.

بنية WaveNet — الالتفافات السببية المتوسِّعة والتنشيط البوّابي والاتصالات المتبقية واتصالات التخطّي — صارت القالب المرجعي الذي تُبنى عليه أنظمة توليد الصوت العصبي. الأعمال التي أتت بعده مثل Tacotron 2 وJukebox دفعت الحدود من مقاطع قصيرة إلى كلام وموسيقى بطول كامل. والفكرة المحورية — التوليد الذاتي الانحداري لـالشكل الموجي الخام — أثبتت أن الشبكات العصبية قادرة على إتقان أدقّ المهام التوليدية في عالم الصوت.

المرجعvan den Oord, Dieleman, Zen, Simonyan, Vinyals, Graves, Kalchbrenner, Senior, Kavukcuoglu. WaveNet: A Generative Model for Raw Audio. SSW (ISCA), 2016.

مصطلحات هذه الورقة