MartsoBodziu1994 commited on
Commit
06ceabb
Β·
verified Β·
1 Parent(s): 47578a3

Upload 4 files

Browse files
fake_classifier.ipynb ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "id": "e330c1de",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import torchaudio\n",
11
+ "from transformers import HubertModel\n",
12
+ "from sklearn.metrics import PrecisionRecallDisplay"
13
+ ]
14
+ },
15
+ {
16
+ "cell_type": "code",
17
+ "execution_count": null,
18
+ "id": "2ac3dd88",
19
+ "metadata": {},
20
+ "outputs": [],
21
+ "source": [
22
+ "# use hubert from HF for feature embedding\n",
23
+ "model = HubertModel.from_pretrained(\"facebook/hubert-base-ls960\")\n",
24
+ "arr, sr = torchaudio.load(\"my_audio.wav\")\n",
25
+ "if sr != 16_000:\n",
26
+ " arr = torchaudio.functional.resample(arr, sr, 16_000)\n",
27
+ "# use intermediate layer\n",
28
+ "hidden_state = model(arr[None], output_hidden_states=True).hidden_states[6]\n",
29
+ "# take mean over time\n",
30
+ "feats = hidden_state.detach().cpu().numpy().squeeze().mean(0)"
31
+ ]
32
+ },
33
+ {
34
+ "cell_type": "code",
35
+ "execution_count": null,
36
+ "id": "03a602e0",
37
+ "metadata": {},
38
+ "outputs": [],
39
+ "source": [
40
+ "# load sk-learn classifier from here: https://dl.suno-models.io/bark/models/v0/classifier.pkl\n",
41
+ "with open(\"classifier.pkl\", \"rb\") as f:\n",
42
+ " clf = pickle.load(f)"
43
+ ]
44
+ },
45
+ {
46
+ "cell_type": "markdown",
47
+ "id": "8e423794",
48
+ "metadata": {},
49
+ "source": [
50
+ "### Precision-recall curve on test set"
51
+ ]
52
+ },
53
+ {
54
+ "attachments": {
55
+ "image.png": {
56
+ "image/png": "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4MCB7BrVtGnTpUuX+sxXkSIgAiIgAiKQeAIBbKny5cvzve3EiRNZE5bvmZzl7dixY9q0aXwR9dJLL7EplPOSwiIgAiIgAiIQFAIBvpdiJQi+xvVTEttzIFflypXzkybolwL61we9RGUoAiIgAiJQsvc3BsKrrao8ctOVJRoSfwTszwOM+PmXKOrHYn1JLFGJh6IcREAEREAEEkNgzpp9ibk9XvcGUCk/eZ05c2bRokV+EuiSCIiACIhAJBH4pfftBbJnTOIWJVyl8KFg2b0krq6KEwEREAERSC4CRXNl7tesYhKXnnCVSuKKqjgREAEREIFUSCCAjx9E8uTJ45MLa5n7jFekCIiACIiACASLQGCVunDhwlNPPXXdddd5FIlr36BBgzwidSoCIiACIiACQSQQWKWqV6/OV73t27f3KHX16tVSKQ8mOhUBERABEQgugcDzUs2aNWPJCe9SGQls166dd7xiREAEREAERCBYBALbUn379vVZGAbW+++/7/OSIkVABERABEQgKAQC21JBKUaZiIAIiIAIiEACCEilEgBNt4iACIiACCQRAalUEoFWMSIgAiIgAgkgIJVKADTdIgIiIAIikEQEpFJJBFrFiIAIiIAIJICAVCoB0HSLCIiACIhAEhGIh0o99thj/fr1s/XCQ50Ye6qACIiACIiACASdQODvpWyR27Zti42Ntad79uzZtWuXPVVABERABERABIJOIB4q9eOPPzqL/+CDD5ynCouACIiACIhA0AnEY8Qv6GUrQxEQAREQARHwTyCALfXVV1/5v79Fixb+E+iqCIiACIiACCSYQACVatWqlZ+s06RJo12m/PDRJREQAREQgUQSCKBSTneJRJak20VABERABEQgvgTiPS91/vz5+Jah9CIgAiIgAiKQMAJuVYqRvVdeeaVo0aLZsmXbunUrhfXv33/y5MkJK1V3iYAIiIAIiIAbAm5VasiQIVOnTn399dczZMhg8mWP+ffee89NGUojAiIgAiIgAgkj4FalPvzww3feeadt27ZRUVGmpKpVq27YsCFhpeouERABERABEXBDwK1KsdJE2bJlnTniWBEdHe2MUVgEREAEREAEgkvArUpVrlx58eLFzrI///zzGjVqOGMUFgEREAEREIHgEgjgiW4LGzhw4KOPPopFhQk1c+bMjRs3MgY4e/Zsm0ABERABERAB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BYtQ4e+H34T3foYhragyFwEREAERCB8C89cdMJV56cu1Ia2VW5VKly7d3XffjWsfu2+wN/yOHTvwpChTpkxIK6fMRUAEREAEwpPAoBaVTcXOR8eEtIbx8J4w9WBqiqWSjh07hlCx0nlIK6fMRUAEREAEwpNA+7olbyiZp+noxaGunltbinqwERS2VNOmTdlWY9SoUa1atVq7NrSGXqgbr/xFQAREQATCnIBbW+qhhx76+uuvMaQeeOCBn376yXszwzBvp6onAiIgAiKQEgm4VSmWnMB7grE+JqhSYjtVZxEQAREQgZRIwK3kTJs2LSU2T3UWAREQARFI0QQCqNTo0aOfeOKJTJkyEfDZTjaA9xmvSBEQAREQARFIPIEAKoWXRNu2bVEpAt6FMQwolfLGohgREAEREIFgEQigUtu2bTMl2UCwClY+IiACIiACIhCQgFtP9MGDB+OJ7szu3LlzRDpjFBYBERABERCB4BJwq1KDBg06ffq0s2xEi0hnjMIiIAIiIAIiEFwCblXq8uXLzEI5y169enWePP+/XaMzXmEREAEREAERCBaBAPNSFJM7d270iaN8+fL8awqOiYnBtOrSpUuw6qF8REAEREAERMCbQGCVYm1ZDKnHHnuM8b2cOXOaLDJkyFCyZMk6dep456gYERABERABEQgWgcAq1b59eworVaoUqyKlT58+WAUrHxEQAREQAREISCCASp08eTJHjhzkUqNGDZz6ODxyNFc9InUqAiIgAiIgAkEhEEClmJRi/0N26c2VK5edlDIFG38KJqiCUg9lIgIiIAIiIALeBAKo1IIFC4wj348//uh9s2JEQAREQAREIKQEAqjUrbfeaoq3gZDWRpmLgAiIgAiIgJOA2++l5s2b9/PPP5s7x40bV7169Ycffpgde515KSwCIiACIiACwSXgVqV69eqFJwVlr1mzpmfPnuzYu3XrVgLBrY1yEwEREAEREAEngQAjfjYpq81WqlSJ0xkzZjRv3nzo0KGrVq1Cq2wCBURABERABEQg6ATc2lJ8xmtWm/3+++8bNWpEPfCqMNZV0OukDEVABERABETAEHBrS918882M79WrV2/58uVsLc/NmzZtuuaaa8RRBERABERABEJHwK0tNXbs2HTp0n3xxRcTJkwoWrQoFZo7d+5dd90VupopZxEQAREQARFwa0sVL1589uzZTl4+d+91JlBYBERABERABBJJwK1KUQzLTHz55Zfr169nEYqKFSu2bNkyKioqkcXrdhEQAREQARHwQ8CtSm3evBmPvj179lx77bWsjcSkVLFixb755psyZcr4yV2XREAEREAERCAxBNzOS3Xt2hVB2rVrFw7ov//++86dO1klncjElK17RUAEREAERMA/Abe21MKFC5cuXWo3582bN+9rr72Gy5//3HVVBERABERABBJDwK0tlTFjxlOnTjlLYq9ePqJyxigsAiIgAiIgAsEl4Fal7r777ieeeGLZsmVMSnFgV7GdfIsWLYJbG+UmAiIgAiIgAk4CblVq9OjRzEuxhXymqwdjfWXLln377bedeSksAiIgAiIgAsEl4HZeil0Q//vf/+Lphyc6thRr+qFSwa2KchMBERABERABDwKBVSo2NnbEiBF8KRUdHd2wYcMBAwZgTXnkolMREAEREAERCAWBwCN+w4cP7927d9asWQsXLjxy5Eh5n4fiMShPERABERABnwQCq9TUqVPHjBnz3XffMeKHRfXhhx8y4uczL0WKgAiIgAiIQHAJBFapHTt24OBnSm3cuDEStXfv3uBWQrmJgAiIgAiIgE8CgVXq4sWLmTNnNjezgh/fSF24cMFnXooUAREQAREQgeASCOw9QXn9+/fPkiWLKRjRGjJkSM6cOc0pM1XBrZByEwEREAEREAFLILBK3XLLLRs3brQ31K1bd+vWreYU08rGKyACIiACIiACQScQWKV++umnoJeqDEVABERABETADYHA81JuclEaERABERABEQgFgQAqxcLnZ86c8VMwK/uxy5SfBLokAiIgAiIgAgkmEECl1q1bV6JEiaeeemru3LmHDh0yxVy6dOnPP/8cP348c1Rt2rTJkSNHgovXjSIgAiIgAiLgh0AAleIb3gULFrBIUtu2bQsVKoQbevbs2dnFo0aNGlOmTOnQocOGDRvq16/vpwDEjP0SWVSpZs2aixcv9k5JJnhhOI/KlSt7J1OMCIiACIhAKiQQ2HuiatWqkyZNmjhxIvbT9u3bz507ly9fvurVq/NvQF7Tp0/v3r07QsUa6mTSpEkTjLPixYs7b2RhdcYVTQxWWrVq1R544AFnAoVFQAREQARSLYE0IV3uqHbt2tdff/2ECRMM34oVK7Zq1WrYsGFx4WYFpnvvvXfbtm0MM8aVhviTJ0/ywdaJEyc02OiHki6JgAiIQEgJrNt7sunoxQWyZ1zer2GCCwrYnwcY8UtwwdzI978rV65s1KiRzYTwkiVL7Kl3YPLkySy77l+ivO9SjAiIgAiIQKQSCDzil+CWHz58OCYmpmDBgjYHwvv377enHoF9+/bhozFt2jSPeHPKskx2ZSa012caRYqACIiACEQYgRDaUoYUbhEWGaOLzlMbbwIsvs5eiwwJesSbU8YJGeUzR7FixXymUaQIiIAIiECEEQihSuFeERUV5TSeDh486DStnCgRMJwGH330UdwInfE23KdPHyaizLFr1y4br4AIiIAIiEAEEwihSqE3eJ/Pnz/f4iPMJ1b21BlYuHAh29V36tTJGekM4/6Or4Q9nJcUFgEREAERiFQCbuelWIECf/EffvgBe4jPpywOu/KsjXEGevbsiXlUq1atOnXqvPPOOzt37uzSpQsJMIz27NnDx1g2MX4TOARWqVLFxiggAiIgAiIgAm5VqnPnzpg7SA77yvuZW/IA2rp16yNHjgwePBjPCBRozpw5xn+PUxTLJmYcb8aMGXw4ZWMUEAEREAEREAEIuP1eCr8G1uvj49xwoBbQvz4cKqk6iIAIiEBkEwiv76Vy586dJ0+eyCau1omACIiACIQbAbfeE6+88sqAAQPOnj0bbg1QfURABERABCKYgNt5qREjRmzZsgU/8pIlS6ZPn94SWbVqlQ0rIAIiIAIiIALBJeBWpeL62Da4tVFuIiACIiACIuAk4FalBg4c6LxNYREQAREQARFIAgJuVcpUhdVj169fjyd6pUqV2GIqCeqnIkRABERABFIzAbcqxce8bMv7008/4ZLOakZ84dSgQYNPP/00f/78qRmf2i4CIiACIhBSAm59/J599lm+Uvrrr7+OHj167NixtWvXctq1a9eQVk6Zi4AIiIAIpHICbm2pefPmff/992xjaHgx4jdu3Djn3lGpnKOaLwIiIAIiEAoCbm0p1u5zOqBTFU6dC/qFonLKUwREQAREIJUTcKtSt99+e7du3fbu3Wt4sVZsjx497rjjjlSOT80XAREQAREIKQG3KjV27NhTp07xSW+ZMmXKli1bqlQpTseMGRPSyilzERABERCBVE7A7bwU2+OyzAQbRG3YsAEfP+alGjZsmMrZqfkiIAIiIAKhJuBWpUw97rx6hLpOyl8EREAEREAEDIEAKjV69OgnnngiU6ZMBHwikzO6TyyKFAEREAERCAqBACo1atSotm3bolIEvMtjEQqplDcWxYiACIiACASLQACV2rZtmynJBoJVsPIRAREQAREQgYAE3Pr4OTOKiYn5448/WIHCGamwCIiACIiACASdgFuV6t69++TJkykeibrllluuv/56vP5Y1i/oFVKGIiACIiACImAJuFWpL774olq1atz29ddfb9++HX90dKtfv342IwVEQAREQAREIOgE3KrU4cOHCxUqRPFz5sx54IEHypcv36lTpzVr1gS9QspQBERABERABCwBtyrFXvLr1q1juI9lZ833vGfPno2KirIZKSACIiACIiACQScQwMfPltexY8cHH3ywcOHCeJ/zaS/xy5Ytq1Chgk2ggAiIgAiIgAgEnYBblXr55ZerVKmya9cuhvsyZsxIPTCkevfuHfQKKUMREAEREAERsATcqhQ33H///fY2Au3bt3eeKiwCIiACIiACQScQQKW0QlLQiStDERABERAB9wQCqJRWSHKPUilFQAREQASCTiCAStmFkWwg6DVQhiIgAiIgAiIQFwG3nuhx3a94ERABERABEQgdAbcqhevEa6+95qzHG2+8gb+fM0ZhERABERABEQguAbcqtXDhwmbNmjnLvuuuuxYtWuSMUVgEREAEREAEgkvArUqdPn06Q4YMzrLTp09/8uRJZ4zCIiACIiACIhBcAm5Vik96p0+f7iz7008/rVSpkjNGYREQAREQAREILoEAPn62sP79+993331btmy5/fbbifzhhx8++eSTzz//3CZQQAREQAREQASCTsCtSrVo0eLLL78cOnQoW3hkzpy5atWq33///a233hr0CilDERABERABEbAE3KoUN+A94eFAYXNRQAREQAREQARCQcDtvBRlHz9+/L333uvbt+/Ro0c5XbVq1Z49e0JRJ+UpAiIgAiIgAoaAW1vqzz//ZFupnDlzslFv586d8+TJM2vWrB07dnz44YdCKQIiIAIiIAIhIuDWlurZs2eHDh3+/vvvTJkymao0adJE30uF6KkoWxEQAREQAUPArUr99ttvTz75pJNa0aJF9+/f74xRWAREQAREQASCS8CtSmFCeXzDu3Hjxvz58we3NspNBERABERABJwE3KpUy5YtBw8eHB0dzc1sKr9z50426uULKmdeCouACIiACIhAcAm4Vak333zz0KFDBQoUOHfuHJ9JlS1bNnv27EOGDAlubZSbCIiACIiACDgJuPXxy5Ejx88//7xgwQIc0GNjY6+//npc/pwZKSwCIiACIiACQSfgSqUuXbrEvNQff/zB8khmhaSg10MZioAIiIAIiIA3AVcjfunSpStRokRMTIz3/YoRAREQAREQgdARcKVSFP/SSy/16dPHrDoRutooZxEQAREQARFwEnA14scNo0eP3rx5c5EiRTCqsmbNarNgmsqGFRABERABERCB4BJwq1J4ouOAHtyylZsIiIAIiIAI+CfgVqVefvll/xnpqgiIgAiIgAgEnUDgeamzZ8/++9//Zj0kPpZ6+OGHDx8+HPRKKEMREAEREAER8EkgsEoNHDhw6tSp7CzVpk2b+fPnP/XUUz4zUqQIiIAIiIAIBJ1A4BG/mTNnTp48GYmi7EceeaRevXq4pEdFRQW9KspQBERABERABDwIBLaldu3aVb9+fXPbjTfeyLdTe/fu9chFpyIgAiIgAiIQCgKBVQrLKUOGDLZsVIqlKOypAiIgAiIgAiIQOgKBVery5cvsf3jvP8f58+e7dOnyz9m9AWs2fvz4UqVKscBSzZo1Fy9e7DP9hQsX+vXrx5dYGTNmLFOmzJQpU3wmU6QIiIAIiEBqIxB4Xqp9+/ZOKExNOU/9h6dPn969e3eEitmsSZMmsb3vunXrihcv7nHXgw8+eODAAWa/WGr94MGDstU8+OhUBERABFItgTSYSqFrfO3atVk9fcKECaaIihUrtmrVatiwYc4S582bh2vG1q1b8+TJ44z3E2Y/xpw5c544cYKV2v0k0yUREAEREIHQEVi392TT0YsLZM+4vF/DBJcSsD8PPOKX4LIvXry4cuXKRo0a2RwIL1myxJ6awFdffVWrVq3XX3+dT7LKly///PPPs4WVRxqdioAIiIAIpE4CgUf8EsyF73/xvChYsKDNgfD+/fvtqQlgRbFzFRNXs2bN4pann36aNW29p6aYu+Iwt3jsbe+RoU5FQAREQAQihkAIbSnDyLn6H6OLzlOTgD0Vifz4449xc2/atOnIkSP5iNjbnGKckFE+cxQrVixiHoAaIgIiIAIi4IdACFUqX758fPzrNJ7wjHCaVqZahQsXZqwP+TGnzF0hZrt37/aoNPuGMBFlDj7h8riqUxEQAREQgYgkEEKV4isrvM9ZVMmCI1y3bl17agK4//GZ8OnTp83ppk2b0qZNe80113gkw0kdXwl7eFzVqQiIgAiIQEQSCKFKwatnz57vvfcek0zr16/v0aPHzp07+daKeAyjdu3aGaCsYJs3b96OHTvipL5o0aJevXo99thjmTNnjkjcapQIiIAIiEC8CITQe4J6tG7d+siRI4MHD963b1+VKlXmzJnDp7vEc4pimYpmy5YNG+vZZ5/F0w+54tupV199NV5tUGIREAEREIFIJRDa76VCRC2gf32IylW2IiACIiAClkCK/17KtkQBERABERABEUgYgdDOSyWsTrpLBERABERABAwBqZR+CSIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgSkUuH7bFQzERABERABqZR+AyIgAiIgAuFLQCoVvs9GNRMBERABEZBK6TcgAiIgAiIQvgTShW/VElSzy5cvX7p0KSYmJkF36yYRiCgCUVFR6dKlS5MmTUS1So1JZQQiSqUuXry4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"
57
+ }
58
+ },
59
+ "cell_type": "markdown",
60
+ "id": "e1486424",
61
+ "metadata": {},
62
+ "source": [
63
+ "![image.png](attachment:image.png)"
64
+ ]
65
+ },
66
+ {
67
+ "cell_type": "code",
68
+ "execution_count": null,
69
+ "id": "668856bf",
70
+ "metadata": {},
71
+ "outputs": [],
72
+ "source": []
73
+ },
74
+ {
75
+ "cell_type": "code",
76
+ "execution_count": null,
77
+ "id": "c87326bd",
78
+ "metadata": {},
79
+ "outputs": [],
80
+ "source": []
81
+ },
82
+ {
83
+ "cell_type": "code",
84
+ "execution_count": null,
85
+ "id": "decdbf09",
86
+ "metadata": {},
87
+ "outputs": [],
88
+ "source": []
89
+ }
90
+ ],
91
+ "metadata": {
92
+ "kernelspec": {
93
+ "display_name": "Python 3 (ipykernel)",
94
+ "language": "python",
95
+ "name": "python3"
96
+ },
97
+ "language_info": {
98
+ "codemirror_mode": {
99
+ "name": "ipython",
100
+ "version": 3
101
+ },
102
+ "file_extension": ".py",
103
+ "mimetype": "text/x-python",
104
+ "name": "python",
105
+ "nbconvert_exporter": "python",
106
+ "pygments_lexer": "ipython3",
107
+ "version": "3.8.15"
108
+ }
109
+ },
110
+ "nbformat": 4,
111
+ "nbformat_minor": 5
112
+ }
long_form_generation.ipynb ADDED
@@ -0,0 +1,400 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "39ea4bed",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import os\n",
11
+ "\n",
12
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n",
13
+ "\n",
14
+ "\n",
15
+ "from IPython.display import Audio\n",
16
+ "import nltk # we'll use this to split into sentences\n",
17
+ "import numpy as np\n",
18
+ "\n",
19
+ "from bark.generation import (\n",
20
+ " generate_text_semantic,\n",
21
+ " preload_models,\n",
22
+ ")\n",
23
+ "from bark.api import semantic_to_waveform\n",
24
+ "from bark import generate_audio, SAMPLE_RATE"
25
+ ]
26
+ },
27
+ {
28
+ "cell_type": "code",
29
+ "execution_count": 29,
30
+ "id": "776964b6",
31
+ "metadata": {},
32
+ "outputs": [],
33
+ "source": [
34
+ "preload_models()"
35
+ ]
36
+ },
37
+ {
38
+ "cell_type": "code",
39
+ "execution_count": null,
40
+ "id": "1d03f4d2",
41
+ "metadata": {},
42
+ "outputs": [],
43
+ "source": []
44
+ },
45
+ {
46
+ "cell_type": "markdown",
47
+ "id": "74a025a4",
48
+ "metadata": {},
49
+ "source": [
50
+ "# Simple Long-Form Generation\n",
51
+ "We split longer text into sentences using `nltk` and generate the sentences one by one."
52
+ ]
53
+ },
54
+ {
55
+ "cell_type": "code",
56
+ "execution_count": 33,
57
+ "id": "57b06e2a",
58
+ "metadata": {},
59
+ "outputs": [],
60
+ "source": [
61
+ "script = \"\"\"\n",
62
+ "Hey, have you heard about this new text-to-audio model called \"Bark\"? \n",
63
+ "Apparently, it's the most realistic and natural-sounding text-to-audio model \n",
64
+ "out there right now. People are saying it sounds just like a real person speaking. \n",
65
+ "I think it uses advanced machine learning algorithms to analyze and understand the \n",
66
+ "nuances of human speech, and then replicates those nuances in its own speech output. \n",
67
+ "It's pretty impressive, and I bet it could be used for things like audiobooks or podcasts. \n",
68
+ "In fact, I heard that some publishers are already starting to use Bark to create audiobooks. \n",
69
+ "It would be like having your own personal voiceover artist. I really think Bark is going to \n",
70
+ "be a game-changer in the world of text-to-audio technology.\n",
71
+ "\"\"\".replace(\"\\n\", \" \").strip()"
72
+ ]
73
+ },
74
+ {
75
+ "cell_type": "code",
76
+ "execution_count": 34,
77
+ "id": "f747f804",
78
+ "metadata": {},
79
+ "outputs": [],
80
+ "source": [
81
+ "sentences = nltk.sent_tokenize(script)"
82
+ ]
83
+ },
84
+ {
85
+ "cell_type": "code",
86
+ "execution_count": 35,
87
+ "id": "17400a9b",
88
+ "metadata": {
89
+ "scrolled": true
90
+ },
91
+ "outputs": [
92
+ {
93
+ "name": "stderr",
94
+ "output_type": "stream",
95
+ "text": [
96
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:02<00:00, 43.03it/s]\n",
97
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 17/17 [00:06<00:00, 2.45it/s]\n",
98
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 22.73it/s]\n",
99
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 33/33 [00:13<00:00, 2.52it/s]\n",
100
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 66.30it/s]\n",
101
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 11/11 [00:04<00:00, 2.46it/s]\n",
102
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 20.99it/s]\n",
103
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 35/35 [00:14<00:00, 2.46it/s]\n",
104
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:03<00:00, 25.63it/s]\n",
105
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 29/29 [00:11<00:00, 2.50it/s]\n",
106
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 23.90it/s]\n",
107
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 30/30 [00:12<00:00, 2.46it/s]\n",
108
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 53.24it/s]\n",
109
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14/14 [00:05<00:00, 2.51it/s]\n",
110
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 50.63it/s]\n",
111
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 15/15 [00:05<00:00, 2.57it/s]\n"
112
+ ]
113
+ }
114
+ ],
115
+ "source": [
116
+ "SPEAKER = \"v2/en_speaker_6\"\n",
117
+ "silence = np.zeros(int(0.25 * SAMPLE_RATE)) # quarter second of silence\n",
118
+ "\n",
119
+ "pieces = []\n",
120
+ "for sentence in sentences:\n",
121
+ " audio_array = generate_audio(sentence, history_prompt=SPEAKER)\n",
122
+ " pieces += [audio_array, silence.copy()]\n"
123
+ ]
124
+ },
125
+ {
126
+ "cell_type": "code",
127
+ "execution_count": null,
128
+ "id": "04cf77f9",
129
+ "metadata": {},
130
+ "outputs": [],
131
+ "source": [
132
+ "Audio(np.concatenate(pieces), rate=SAMPLE_RATE)"
133
+ ]
134
+ },
135
+ {
136
+ "cell_type": "code",
137
+ "execution_count": null,
138
+ "id": "ac2d4625",
139
+ "metadata": {},
140
+ "outputs": [],
141
+ "source": []
142
+ },
143
+ {
144
+ "cell_type": "markdown",
145
+ "id": "6d13249b",
146
+ "metadata": {},
147
+ "source": [
148
+ "# $ \\\\ $"
149
+ ]
150
+ },
151
+ {
152
+ "cell_type": "markdown",
153
+ "id": "cdfc8bf5",
154
+ "metadata": {},
155
+ "source": [
156
+ "# Advanced Long-Form Generation\n",
157
+ "Somtimes Bark will hallucinate a little extra audio at the end of the prompt.\n",
158
+ "We can solve this issue by lowering the threshold for bark to stop generating text. \n",
159
+ "We use the `min_eos_p` kwarg in `generate_text_semantic`"
160
+ ]
161
+ },
162
+ {
163
+ "cell_type": "code",
164
+ "execution_count": 37,
165
+ "id": "62807fd0",
166
+ "metadata": {},
167
+ "outputs": [
168
+ {
169
+ "name": "stderr",
170
+ "output_type": "stream",
171
+ "text": [
172
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:02<00:00, 38.05it/s]\n",
173
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 18/18 [00:07<00:00, 2.46it/s]\n",
174
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:03<00:00, 32.28it/s]\n",
175
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 21/21 [00:08<00:00, 2.54it/s]\n",
176
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 55.78it/s]\n",
177
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14/14 [00:05<00:00, 2.57it/s]\n",
178
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:06<00:00, 14.73it/s]\n",
179
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 35/35 [00:14<00:00, 2.47it/s]\n",
180
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:02<00:00, 40.29it/s]\n",
181
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 18/18 [00:07<00:00, 2.56it/s]\n",
182
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:03<00:00, 32.92it/s]\n",
183
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 20/20 [00:08<00:00, 2.47it/s]\n",
184
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 68.87it/s]\n",
185
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 12/12 [00:04<00:00, 2.62it/s]\n",
186
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:02<00:00, 47.64it/s]\n",
187
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 15/15 [00:06<00:00, 2.46it/s]\n"
188
+ ]
189
+ }
190
+ ],
191
+ "source": [
192
+ "GEN_TEMP = 0.6\n",
193
+ "SPEAKER = \"v2/en_speaker_6\"\n",
194
+ "silence = np.zeros(int(0.25 * SAMPLE_RATE)) # quarter second of silence\n",
195
+ "\n",
196
+ "pieces = []\n",
197
+ "for sentence in sentences:\n",
198
+ " semantic_tokens = generate_text_semantic(\n",
199
+ " sentence,\n",
200
+ " history_prompt=SPEAKER,\n",
201
+ " temp=GEN_TEMP,\n",
202
+ " min_eos_p=0.05, # this controls how likely the generation is to end\n",
203
+ " )\n",
204
+ "\n",
205
+ " audio_array = semantic_to_waveform(semantic_tokens, history_prompt=SPEAKER,)\n",
206
+ " pieces += [audio_array, silence.copy()]\n",
207
+ "\n"
208
+ ]
209
+ },
210
+ {
211
+ "cell_type": "code",
212
+ "execution_count": null,
213
+ "id": "133fec46",
214
+ "metadata": {},
215
+ "outputs": [],
216
+ "source": [
217
+ "Audio(np.concatenate(pieces), rate=SAMPLE_RATE)"
218
+ ]
219
+ },
220
+ {
221
+ "cell_type": "code",
222
+ "execution_count": null,
223
+ "id": "6eee9f5a",
224
+ "metadata": {},
225
+ "outputs": [],
226
+ "source": []
227
+ },
228
+ {
229
+ "cell_type": "markdown",
230
+ "id": "be8e125e",
231
+ "metadata": {},
232
+ "source": [
233
+ "# $ \\\\ $"
234
+ ]
235
+ },
236
+ {
237
+ "cell_type": "markdown",
238
+ "id": "03a16c1b",
239
+ "metadata": {},
240
+ "source": [
241
+ "# Make a Long-Form Dialog with Bark"
242
+ ]
243
+ },
244
+ {
245
+ "cell_type": "markdown",
246
+ "id": "06c5eff8",
247
+ "metadata": {},
248
+ "source": [
249
+ "### Step 1: Format a script and speaker lookup"
250
+ ]
251
+ },
252
+ {
253
+ "cell_type": "code",
254
+ "execution_count": 14,
255
+ "id": "5238b297",
256
+ "metadata": {},
257
+ "outputs": [
258
+ {
259
+ "data": {
260
+ "text/plain": [
261
+ "['Samantha: Hey, have you heard about this new text-to-audio model called \"Bark\"?',\n",
262
+ " \"John: No, I haven't. What's so special about it?\",\n",
263
+ " \"Samantha: Well, apparently it's the most realistic and natural-sounding text-to-audio model out there right now. People are saying it sounds just like a real person speaking.\",\n",
264
+ " 'John: Wow, that sounds amazing. How does it work?',\n",
265
+ " 'Samantha: I think it uses advanced machine learning algorithms to analyze and understand the nuances of human speech, and then replicates those nuances in its own speech output.',\n",
266
+ " \"John: That's pretty impressive. Do you think it could be used for things like audiobooks or podcasts?\",\n",
267
+ " 'Samantha: Definitely! In fact, I heard that some publishers are already starting to use Bark to create audiobooks. And I bet it would be great for podcasts too.',\n",
268
+ " 'John: I can imagine. It would be like having your own personal voiceover artist.',\n",
269
+ " 'Samantha: Exactly! I think Bark is going to be a game-changer in the world of text-to-audio technology.']"
270
+ ]
271
+ },
272
+ "execution_count": 14,
273
+ "metadata": {},
274
+ "output_type": "execute_result"
275
+ }
276
+ ],
277
+ "source": [
278
+ "speaker_lookup = {\"Samantha\": \"v2/en_speaker_9\", \"John\": \"v2/en_speaker_2\"}\n",
279
+ "\n",
280
+ "# Script generated by chat GPT\n",
281
+ "script = \"\"\"\n",
282
+ "Samantha: Hey, have you heard about this new text-to-audio model called \"Bark\"?\n",
283
+ "\n",
284
+ "John: No, I haven't. What's so special about it?\n",
285
+ "\n",
286
+ "Samantha: Well, apparently it's the most realistic and natural-sounding text-to-audio model out there right now. People are saying it sounds just like a real person speaking.\n",
287
+ "\n",
288
+ "John: Wow, that sounds amazing. How does it work?\n",
289
+ "\n",
290
+ "Samantha: I think it uses advanced machine learning algorithms to analyze and understand the nuances of human speech, and then replicates those nuances in its own speech output.\n",
291
+ "\n",
292
+ "John: That's pretty impressive. Do you think it could be used for things like audiobooks or podcasts?\n",
293
+ "\n",
294
+ "Samantha: Definitely! In fact, I heard that some publishers are already starting to use Bark to create audiobooks. And I bet it would be great for podcasts too.\n",
295
+ "\n",
296
+ "John: I can imagine. It would be like having your own personal voiceover artist.\n",
297
+ "\n",
298
+ "Samantha: Exactly! I think Bark is going to be a game-changer in the world of text-to-audio technology.\"\"\"\n",
299
+ "script = script.strip().split(\"\\n\")\n",
300
+ "script = [s.strip() for s in script if s]\n",
301
+ "script"
302
+ ]
303
+ },
304
+ {
305
+ "cell_type": "markdown",
306
+ "id": "ee547efd",
307
+ "metadata": {},
308
+ "source": [
309
+ "### Step 2: Generate the audio for every speaker turn"
310
+ ]
311
+ },
312
+ {
313
+ "cell_type": "code",
314
+ "execution_count": 15,
315
+ "id": "203e5081",
316
+ "metadata": {},
317
+ "outputs": [
318
+ {
319
+ "name": "stderr",
320
+ "output_type": "stream",
321
+ "text": [
322
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:02<00:00, 34.03it/s]\n",
323
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 22/22 [00:08<00:00, 2.55it/s]\n",
324
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 71.58it/s]\n",
325
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 11/11 [00:04<00:00, 2.65it/s]\n",
326
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 22.75it/s]\n",
327
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 33/33 [00:13<00:00, 2.53it/s]\n",
328
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 70.76it/s]\n",
329
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 11/11 [00:04<00:00, 2.63it/s]\n",
330
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 20.46it/s]\n",
331
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 36/36 [00:14<00:00, 2.47it/s]\n",
332
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 20.18it/s]\n",
333
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 37/37 [00:14<00:00, 2.51it/s]\n",
334
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆοΏ½οΏ½οΏ½β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:04<00:00, 23.04it/s]\n",
335
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 32/32 [00:12<00:00, 2.48it/s]\n",
336
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 54.64it/s]\n",
337
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14/14 [00:05<00:00, 2.58it/s]\n",
338
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:03<00:00, 31.71it/s]\n",
339
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 24/24 [00:09<00:00, 2.56it/s]\n"
340
+ ]
341
+ }
342
+ ],
343
+ "source": [
344
+ "pieces = []\n",
345
+ "silence = np.zeros(int(0.5*SAMPLE_RATE))\n",
346
+ "for line in script:\n",
347
+ " speaker, text = line.split(\": \")\n",
348
+ " audio_array = generate_audio(text, history_prompt=speaker_lookup[speaker], )\n",
349
+ " pieces += [audio_array, silence.copy()]"
350
+ ]
351
+ },
352
+ {
353
+ "cell_type": "markdown",
354
+ "id": "7c54bada",
355
+ "metadata": {},
356
+ "source": [
357
+ "### Step 3: Concatenate all of the audio and play it"
358
+ ]
359
+ },
360
+ {
361
+ "cell_type": "code",
362
+ "execution_count": null,
363
+ "id": "27a56842",
364
+ "metadata": {},
365
+ "outputs": [],
366
+ "source": [
367
+ "Audio(np.concatenate(pieces), rate=SAMPLE_RATE)"
368
+ ]
369
+ },
370
+ {
371
+ "cell_type": "code",
372
+ "execution_count": null,
373
+ "id": "a1bc5877",
374
+ "metadata": {},
375
+ "outputs": [],
376
+ "source": []
377
+ }
378
+ ],
379
+ "metadata": {
380
+ "kernelspec": {
381
+ "display_name": "Python 3 (ipykernel)",
382
+ "language": "python",
383
+ "name": "python3"
384
+ },
385
+ "language_info": {
386
+ "codemirror_mode": {
387
+ "name": "ipython",
388
+ "version": 3
389
+ },
390
+ "file_extension": ".py",
391
+ "mimetype": "text/x-python",
392
+ "name": "python",
393
+ "nbconvert_exporter": "python",
394
+ "pygments_lexer": "ipython3",
395
+ "version": "3.9.16"
396
+ }
397
+ },
398
+ "nbformat": 4,
399
+ "nbformat_minor": 5
400
+ }
memory_profiling_bark.ipynb ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "90641144",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Bark Memory Profiling\n",
9
+ "Bark has two ways to reduce GPU memory: \n",
10
+ " - Small models: a smaller version of the model. This can be set by using the environment variable `SUNO_USE_SMALL_MODELS`\n",
11
+ " - offloading models to CPU: Holding only one model at a time on the GPU, and shuttling the models to the CPU in between generations. \n",
12
+ "\n",
13
+ "# $ \\\\ $\n",
14
+ "## First, we'll use the most memory efficient configuration"
15
+ ]
16
+ },
17
+ {
18
+ "cell_type": "code",
19
+ "execution_count": 1,
20
+ "id": "39ea4bed",
21
+ "metadata": {},
22
+ "outputs": [],
23
+ "source": [
24
+ "import os\n",
25
+ "\n",
26
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n",
27
+ "os.environ[\"SUNO_USE_SMALL_MODELS\"] = \"1\"\n",
28
+ "os.environ[\"SUNO_OFFLOAD_CPU\"] = \"1\"\n",
29
+ "\n",
30
+ "from bark.generation import (\n",
31
+ " generate_text_semantic,\n",
32
+ " preload_models,\n",
33
+ ")\n",
34
+ "from bark import generate_audio, SAMPLE_RATE\n",
35
+ "\n",
36
+ "import torch"
37
+ ]
38
+ },
39
+ {
40
+ "cell_type": "code",
41
+ "execution_count": 2,
42
+ "id": "66b0c006",
43
+ "metadata": {},
44
+ "outputs": [
45
+ {
46
+ "name": "stderr",
47
+ "output_type": "stream",
48
+ "text": [
49
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:01<00:00, 62.17it/s]\n",
50
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 10/10 [00:03<00:00, 2.74it/s]\n"
51
+ ]
52
+ },
53
+ {
54
+ "name": "stdout",
55
+ "output_type": "stream",
56
+ "text": [
57
+ "max memory usage = 2396MB\n"
58
+ ]
59
+ }
60
+ ],
61
+ "source": [
62
+ "torch.cuda.reset_peak_memory_stats()\n",
63
+ "preload_models()\n",
64
+ "audio_array = generate_audio(\"madam I'm adam\", history_prompt=\"v2/en_speaker_5\")\n",
65
+ "max_utilization = torch.cuda.max_memory_allocated()\n",
66
+ "print(f\"max memory usage = {max_utilization / 1024 / 1024:.0f}MB\")"
67
+ ]
68
+ },
69
+ {
70
+ "cell_type": "code",
71
+ "execution_count": null,
72
+ "id": "9922dd2d",
73
+ "metadata": {},
74
+ "outputs": [],
75
+ "source": []
76
+ },
77
+ {
78
+ "cell_type": "code",
79
+ "execution_count": null,
80
+ "id": "bdbe578e",
81
+ "metadata": {},
82
+ "outputs": [],
83
+ "source": []
84
+ },
85
+ {
86
+ "cell_type": "markdown",
87
+ "id": "213d1b5b",
88
+ "metadata": {},
89
+ "source": [
90
+ "# Memory Profiling:\n",
91
+ "We can profile the memory consumption of 4 scenarios\n",
92
+ " - Small models, offloading to CPU\n",
93
+ " - Large models, offloading to CPU\n",
94
+ " - Small models, not offloading to CPU\n",
95
+ " - Large models, not offloading to CPU"
96
+ ]
97
+ },
98
+ {
99
+ "cell_type": "code",
100
+ "execution_count": 1,
101
+ "id": "417d5e9c",
102
+ "metadata": {},
103
+ "outputs": [],
104
+ "source": [
105
+ "import os\n",
106
+ "\n",
107
+ "from bark.generation import (\n",
108
+ " generate_text_semantic,\n",
109
+ " preload_models,\n",
110
+ " models,\n",
111
+ ")\n",
112
+ "import bark.generation\n",
113
+ "\n",
114
+ "from bark.api import semantic_to_waveform\n",
115
+ "from bark import generate_audio, SAMPLE_RATE\n",
116
+ "\n",
117
+ "import torch\n",
118
+ "import time"
119
+ ]
120
+ },
121
+ {
122
+ "cell_type": "code",
123
+ "execution_count": 2,
124
+ "id": "cd83b45d",
125
+ "metadata": {},
126
+ "outputs": [
127
+ {
128
+ "name": "stdout",
129
+ "output_type": "stream",
130
+ "text": [
131
+ "Small models True, offloading to CPU: True\n",
132
+ "\tmax memory usage = 967MB, time 4s\n",
133
+ "\n",
134
+ "Small models False, offloading to CPU: True\n",
135
+ "\tmax memory usage = 2407MB, time 8s\n",
136
+ "\n",
137
+ "Small models True, offloading to CPU: False\n",
138
+ "\tmax memory usage = 2970MB, time 3s\n",
139
+ "\n",
140
+ "Small models False, offloading to CPU: False\n",
141
+ "\tmax memory usage = 7824MB, time 6s\n",
142
+ "\n"
143
+ ]
144
+ }
145
+ ],
146
+ "source": [
147
+ "global models\n",
148
+ "\n",
149
+ "for offload_models in (True, False):\n",
150
+ " # this setattr is needed to do on the fly\n",
151
+ " # the easier way to do this is with `os.environ[\"SUNO_OFFLOAD_CPU\"] = \"1\"`\n",
152
+ " setattr(bark.generation, \"OFFLOAD_CPU\", offload_models)\n",
153
+ " for use_small_models in (True, False):\n",
154
+ " models = {}\n",
155
+ " torch.cuda.empty_cache()\n",
156
+ " torch.cuda.reset_peak_memory_stats()\n",
157
+ " preload_models(\n",
158
+ " text_use_small=use_small_models,\n",
159
+ " coarse_use_small=use_small_models,\n",
160
+ " fine_use_small=use_small_models,\n",
161
+ " force_reload=True,\n",
162
+ " )\n",
163
+ " t0 = time.time()\n",
164
+ " audio_array = generate_audio(\"madam I'm adam\", history_prompt=\"v2/en_speaker_5\", silent=True)\n",
165
+ " dur = time.time() - t0\n",
166
+ " max_utilization = torch.cuda.max_memory_allocated()\n",
167
+ " print(f\"Small models {use_small_models}, offloading to CPU: {offload_models}\")\n",
168
+ " print(f\"\\tmax memory usage = {max_utilization / 1024 / 1024:.0f}MB, time {dur:.0f}s\\n\")"
169
+ ]
170
+ },
171
+ {
172
+ "cell_type": "code",
173
+ "execution_count": null,
174
+ "id": "bfe5fa06",
175
+ "metadata": {},
176
+ "outputs": [],
177
+ "source": []
178
+ }
179
+ ],
180
+ "metadata": {
181
+ "kernelspec": {
182
+ "display_name": "Python 3 (ipykernel)",
183
+ "language": "python",
184
+ "name": "python3"
185
+ },
186
+ "language_info": {
187
+ "codemirror_mode": {
188
+ "name": "ipython",
189
+ "version": 3
190
+ },
191
+ "file_extension": ".py",
192
+ "mimetype": "text/x-python",
193
+ "name": "python",
194
+ "nbconvert_exporter": "python",
195
+ "pygments_lexer": "ipython3",
196
+ "version": "3.9.16"
197
+ }
198
+ },
199
+ "nbformat": 4,
200
+ "nbformat_minor": 5
201
+ }
use_small_models_on_cpu.ipynb ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "6a682b61",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Benchmarking small models on CPU\n",
9
+ " - We can enable small models with the `SUNO_USE_SMALL_MODELS` environment variable"
10
+ ]
11
+ },
12
+ {
13
+ "cell_type": "code",
14
+ "execution_count": 1,
15
+ "id": "9500dd93",
16
+ "metadata": {},
17
+ "outputs": [],
18
+ "source": [
19
+ "import os\n",
20
+ "\n",
21
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"\"\n",
22
+ "os.environ[\"SUNO_USE_SMALL_MODELS\"] = \"1\"\n",
23
+ "\n",
24
+ "from IPython.display import Audio\n",
25
+ "import numpy as np\n",
26
+ "\n",
27
+ "from bark import generate_audio, preload_models, SAMPLE_RATE\n",
28
+ "\n",
29
+ "import time"
30
+ ]
31
+ },
32
+ {
33
+ "cell_type": "code",
34
+ "execution_count": 2,
35
+ "id": "4e3454b6",
36
+ "metadata": {},
37
+ "outputs": [
38
+ {
39
+ "name": "stderr",
40
+ "output_type": "stream",
41
+ "text": [
42
+ "No GPU being used. Careful, inference might be very slow!\n"
43
+ ]
44
+ },
45
+ {
46
+ "name": "stdout",
47
+ "output_type": "stream",
48
+ "text": [
49
+ "CPU times: user 5.52 s, sys: 2.34 s, total: 7.86 s\n",
50
+ "Wall time: 4.33 s\n"
51
+ ]
52
+ }
53
+ ],
54
+ "source": [
55
+ "%%time\n",
56
+ "preload_models()"
57
+ ]
58
+ },
59
+ {
60
+ "cell_type": "code",
61
+ "execution_count": 3,
62
+ "id": "f6024e5f",
63
+ "metadata": {},
64
+ "outputs": [
65
+ {
66
+ "name": "stderr",
67
+ "output_type": "stream",
68
+ "text": [
69
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 100/100 [00:10<00:00, 9.89it/s]\n",
70
+ "100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 15/15 [00:43<00:00, 2.90s/it]\n"
71
+ ]
72
+ },
73
+ {
74
+ "name": "stdout",
75
+ "output_type": "stream",
76
+ "text": [
77
+ "took 62s to generate 6s of audio\n"
78
+ ]
79
+ }
80
+ ],
81
+ "source": [
82
+ "t0 = time.time()\n",
83
+ "text = \"In the light of the moon, a little egg lay on a leaf\"\n",
84
+ "audio_array = generate_audio(text)\n",
85
+ "generation_duration_s = time.time() - t0\n",
86
+ "audio_duration_s = audio_array.shape[0] / SAMPLE_RATE\n",
87
+ "\n",
88
+ "print(f\"took {generation_duration_s:.0f}s to generate {audio_duration_s:.0f}s of audio\")"
89
+ ]
90
+ },
91
+ {
92
+ "cell_type": "code",
93
+ "execution_count": 4,
94
+ "id": "2dcce86c",
95
+ "metadata": {},
96
+ "outputs": [
97
+ {
98
+ "data": {
99
+ "text/plain": [
100
+ "10"
101
+ ]
102
+ },
103
+ "execution_count": 4,
104
+ "metadata": {},
105
+ "output_type": "execute_result"
106
+ }
107
+ ],
108
+ "source": [
109
+ "os.cpu_count()"
110
+ ]
111
+ },
112
+ {
113
+ "cell_type": "code",
114
+ "execution_count": null,
115
+ "id": "3046eddb",
116
+ "metadata": {},
117
+ "outputs": [],
118
+ "source": []
119
+ }
120
+ ],
121
+ "metadata": {
122
+ "kernelspec": {
123
+ "display_name": "Python 3 (ipykernel)",
124
+ "language": "python",
125
+ "name": "python3"
126
+ },
127
+ "language_info": {
128
+ "codemirror_mode": {
129
+ "name": "ipython",
130
+ "version": 3
131
+ },
132
+ "file_extension": ".py",
133
+ "mimetype": "text/x-python",
134
+ "name": "python",
135
+ "nbconvert_exporter": "python",
136
+ "pygments_lexer": "ipython3",
137
+ "version": "3.9.16"
138
+ }
139
+ },
140
+ "nbformat": 4,
141
+ "nbformat_minor": 5
142
+ }