plume-asr/notebooks/Diarization.ipynb

226 lines
363 KiB
Plaintext
Raw Permalink Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"id": "808d647c-deef-41ec-8a69-06f7a72689cb",
"metadata": {},
"outputs": [],
"source": [
"import torch"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e49e45a1-2133-487c-a8bc-69caed303074",
"metadata": {},
"outputs": [],
"source": [
"#!pip install pyannote.audio==1.1.1\n",
"#!pip install pyannote.core[notebook]\n",
"#!pip install pyannote.pipeline\n",
"#!pip install pyannote.core\n",
"!pip install ipywidgets"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "59437acd-b487-4531-bb4e-a4c216a67a29",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using cache found in /home/reves/.cache/torch/hub/pyannote_pyannote-audio_master\n",
"Using cache found in /home/reves/.cache/torch/hub/pyannote_pyannote-audio_master\n",
"Using cache found in /home/reves/.cache/torch/hub/pyannote_pyannote-audio_master\n",
"Using cache found in /home/reves/.cache/torch/hub/pyannote_pyannote-audio_master\n",
"/home/reves/plume-asr/.direnv/python-3.8.10/lib/python3.8/site-packages/pyannote/audio/embedding/approaches/arcface_loss.py:170: FutureWarning: The 's' parameter is deprecated in favor of 'scale', and will be removed in a future release\n",
" warnings.warn(msg, FutureWarning)\n",
"/home/reves/plume-asr/.direnv/python-3.8.10/lib/python3.8/site-packages/pyannote/audio/features/pretrained.py:156: UserWarning: Model was trained with 4s chunks and is applied on 2s chunks. This might lead to sub-optimal results.\n",
" warnings.warn(msg)\n",
"Using cache found in /home/reves/.cache/torch/hub/pyannote_pyannote-audio_master\n"
]
}
],
"source": [
"#pipeline = torch.hub.load('pyannote/pyannote-audio', 'dia_ami')\n",
"pipeline = torch.hub.load('pyannote/pyannote-audio', 'dia')"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "5f69fda5-d94d-4c6f-854d-fd2788ff5bc5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 3.94 s, sys: 179 ms, total: 4.12 s\n",
"Wall time: 4.12 s\n"
]
}
],
"source": [
"%time diarization = pipeline({'audio': '/home/reves/test-dt.wav'})"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "93eb8203-af2f-4905-90ec-7e667200e647",
"metadata": {},
"outputs": [],
"source": [
"for turn, _, speaker in diarization.itertracks(yield_label=True):\n",
" print(f'Speaker \"{speaker}\" speaks between t={turn.start:.1f}s and t={turn.end:.1f}s.')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc0075a9-d089-46a9-bf0c-47ff4a158d8f",
"metadata": {},
"outputs": [],
"source": [
"from ipywidgets import Audio"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "efdd69fb-06f3-4eee-b167-a73496ebbdca",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"Audio(value=open('/home/reves/test-dt.wav','rb').read(),format=\"wav\")\n",
"# test = Audio.from_file('/home/reves/test-dt.wav', autoplay=False)\n",
"# test.play()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9af87675-eade-4b5b-aa22-8b877202102a",
"metadata": {},
"outputs": [],
"source": [
"from plume.utils.transcribe import chunk_transcribe_meta_gen, transcribe_rpyc_gen\n",
"base_transcriber, base_prep = transcribe_rpyc_gen()\n",
"transcriber, prep = chunk_transcribe_meta_gen(\n",
" base_transcriber, base_prep, method=\"chunked\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "0fef3f35-7143-49c6-8cd2-862b5d2b7344",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <audio controls>\n",
" <source src=\"data:audio/mpeg;base64,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
" Your browser does not support the audio element.\n",
" </audio>\n",
" "
],
"text/plain": [
"<pydub.audio_segment.AudioSegment at 0x7f51c1ca5a60>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pydub\n",
"audio_file = '/home/reves/test-dt.wav'\n",
"aseg = pydub.AudioSegment.from_file(audio_file)\n",
"aseg"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "34cbea05-4c57-4a3c-8832-5677d2486231",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"#Agent[1.2s-7.4s]: வணக்கம் சார் என்ளடைய நன்ுன் நகந்துக்கு சுலப்கப்பட்டி ரெச்சோரும் சல் எ்ன செலவு கன்றதுக்காவர் பா் \n",
"#Customer[7.4s-8.5s]: யர ர் \n",
"#Agent[8.8s-13.6s]: சரனால பிண்டிக்கல் தலப்பாகட்டி ரெஸ்டோரன்ட்ருந்து ஃபீட்பாக் கலெக்ட் வண்றதுக்காக கால் பண்ணிருக்கோம் ச \n",
"#Customer[13.9s-14.7s]: அ்கலு மேடம் \n",
"#Agent[15.4s-19.7s]: சர் இந்த கால் வந்து ரெண்டு ண்து மூனு நிமிஷம் நடிக்கும் பேசலாம்வாக செர்ன் தெரிலமா \n",
"#Customer[20.2s-22.8s]: இல்ல அவள வேலைப \n",
"#Customer[23.3s-24.1s]: சரிாச்சா \n",
"#Agent[24.7s-33.2s]: எச்ச ஃபீஸ்பாக் கலெக்ட் பண்றதுக்காக கால் பண்ணிருக்கோம் உங்க பேர் ரமேஷன்லா படேஷன் குவாலிட்டி மட்டு வி்சலி் க பு்பப்பறப்பா் செயப்படு் \n",
"#Agent[33.5s-37.8s]: நீங்க டைமன் பணிரந்த் அனுபவம் எப்டி எந்த்க்கரக்்சசி்டங் \n",
"#Customer[38.2s-41.2s]: ஆஹஆஹ் நல்லாருக்கேன் மேடம்்ுடி \n",
"#Customer[42.0s-45.5s]: நன்காசசாகடன் இந்ல எனக்கு ச்ிப்ணிநான்பகே்் \n",
"#Customer[46.1s-46.9s]: ஓகேயவநல்ா் \n",
"#Agent[47.4s-56.7s]: இ்தரெஸ்கரண்டுக்கு மொத்தம் ஐந்து மதுப்பெண்கள்ர்கறைசர் ஒன்ணு குறைவானது ஐந்ததிலும் ங்ளுட அனுபவத்து வச்சு எுத்கு நீங்க ஐந்து கைந்து குடுத்திருக்கீங்க இந்த மதிப்பெண்கள் உங்களல குடுக்கப்பட்டதீங்களா \n",
"#Customer[58.0s-58.4s]: என்ன மேடம் \n",
"#Agent[58.9s-68.1s]: அதாவது நேத்து நீங்க ரேட்டிங்பை்கு பைல் மிச் ரெஸ்ட்ரோன்ஸ்ல ப்கிஙகீங்களா சார் வரேட்டிங் சகம் மித்தநன்றி்ச வ்மேஷன் மித் க \n",
"#Customer[68.1s-72.8s]: மேடம்என் நம்ப தரவட ஓர் சி இரங்குத்தம்பாத்துருவான கஷ்சப்பட்டங்க எப்டி பண்ணம் சாப்டுவாங்க \n",
"#Customer[73.8s-78.4s]: சாபால் நல்லாருந்து என்ன பேசிும் ல்லா இல்லதாு எதனத்தம்ப தரனா \n",
"#Customer[78.6s-81.0s]: சொல்லுாசி \n",
"#Agent[82.7s-85.6s]: சோதலை அதிகமாருக்கு நிலங்க \n",
"#Customer[86.1s-88.6s]: போ்காொ்சம் வேலை யரக்குன்டா ஈவ்னிங் தூரும் \n",
"#Customer[89.6s-90.2s]: உ \n"
]
}
],
"source": [
"for turn, _, speaker in diarization.itertracks(yield_label=True):\n",
" #print(f'Speaker \"{speaker}\" speaks between t={turn.start:.1f}s and t={turn.end:.1f}s.')\n",
" speaker_label = \"Agent\" if speaker == \"B\" else \"Customer\"\n",
" tscirpt = transcriber(prep(aseg[turn.start*1000:turn.end*1000]))\n",
" print(f'#{speaker_label}[{turn.start:.1f}s-{turn.end:.1f}s]: {tscirpt}')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f4ea9ee1-cc14-4e00-8433-45d416298af2",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}