From 10fc2622ec5839432c91b86bee44af789f549b7f Mon Sep 17 00:00:00 2001 From: timothyafolami Date: Fri, 9 Aug 2024 16:33:21 +0100 Subject: [PATCH] audio preprocessing pipeline completed. --- audio_experiment.ipynb | 92 ++++++++++++- data/documents.json | 2 +- .../__pycache__/utils.cpython-311.pyc | Bin 13522 -> 18193 bytes data_ingestion/utils.py | 126 +++++++++++++++++- loggings/app.log | 41 ++++++ vec-db/index/faiss_index_data/index.faiss | Bin 984621 -> 1007661 bytes vec-db/index/faiss_index_data/index.pkl | Bin 985207 -> 1021078 bytes 7 files changed, 253 insertions(+), 8 deletions(-) diff --git a/audio_experiment.ipynb b/audio_experiment.ipynb index 5293625d..d83ea4de 100644 --- a/audio_experiment.ipynb +++ b/audio_experiment.ipynb @@ -23,6 +23,13 @@ "# !pip install pydub " ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Audio Processing Pipeline" + ] + }, { "cell_type": "code", "execution_count": 13, @@ -233,7 +240,27 @@ "# Output the documents for verification\n", "for doc in documents:\n", " print(f\"Document metadata: {doc.metadata}\")\n", - " print(f\"Transcript: {doc.page_content}\") # Print first 100 characters of the transcript" + " print(f\"Transcript: {doc.page_content}\") " + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['filename', 'duration'])" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "doc.metadata.keys()" ] }, { @@ -256,6 +283,69 @@ "documents[1].metadata" ] }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# creating a function to create audio document\n", + "def create_audio_document(audio_file_path, chunk_duration_minutes=3):\n", + " documents = transcribe_audio_chunks(audio_file_path, chunk_duration_minutes)\n", + " return documents" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exporting audio-1_chunks/audio-1_chunk1.mp3\n", + "Exporting audio-1_chunks/audio-1_chunk2.mp3\n", + "Exporting audio-1_chunks/audio-1_chunk3.mp3\n", + "Exporting audio-1_chunks/audio-1_chunk4.mp3\n", + "Exporting audio-1_chunks/audio-1_chunk5.mp3\n", + "Exporting audio-1_chunks/audio-1_chunk6.mp3\n", + "Exporting audio-1_chunks/audio-1_chunk7.mp3\n" + ] + } + ], + "source": [ + "# testing the function\n", + "audio_file_path = \"data/audio-1.mp3\"\n", + "documents = create_audio_document(audio_file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Document(metadata={'filename': 'audio-1', 'duration': '0-3 minutes'}, page_content=\" Hello friend, how is it going? Welcome back to Toyota Maintenance YouTube channel. I have today in my shop this 2009 Toyota Corolla LE. She has only 90,000 miles on the odometer. I don't know this vehicle at all. It's a new customer, new car and they asked for a very detailed inspection. The inspection is successfully finished and that gives me great opportunity to talk about the most common problems with this generation of Corolla. And let's go and start with the problem which will be most expensive to repair. And I'm pointing at this car for the reason the name of it is written right here. Variable valve timing. This 1.8 liter 2Z RFE engine is equipped with the variable valve timing and if you will have a problem with it you will basically hear the rattling on the cold start. It is the known problem but I even hesitate if I should say it very common problem I personally didn see that much happening on the cars I serviced in the past And of course it always very important when you have an engine with VVT to be on top of the oil changes keeping the oil clean and possibly avoid these problems. Speaking about engine oil, we have immediately another common problem. These engines are known for engine oil consumption. Unfortunately, some of them were using or eating engine oil way faster, consuming the oil way faster than they supposed to. to. So this vehicle has a windshield sticker for 5,000 miles. All change there is still remaining 900 miles and let me show you what I discovered on my inspection. I let it sit so the oil got a chance to get all the way in the oil pan. I pulled that engine oil lipstick and of course it was confirmed it's barely touching the low mark I hope you can see it on it yeah so even this engine is consuming more than it's supposed to within a 5,000 miles\"),\n", + " Document(metadata={'filename': 'audio-1', 'duration': '3-6 minutes'}, page_content=\" It was correctly filled to the top. This is way too much. Between the marks on this engine I believe it's 1.4 quarts. So this is way too much and this engine is part of that problem. Is it catastrophic problem or something what should stop you from purchasing it? Well, that's up to debate. It will not stop me buying this vehicle. All I will have to do within 2,000 miles or 3,000 miles is check the oil. And here it's so easy to add another 1 quart of the oil. Also, 1 quart of the oil, even if you buy the full synthetic 0W-20, costs only like 7 bucks. So what's the big deal? And let's be organized and continue still or stick still with the engine oil. And we will be looking on this side passenger side of the engine. Some people will observe the oil engine oil on this side of the engine. Do you see that sensor which is coming out there? It could be leaking from that. Or we can look a little bit later when we will lift this vehicle up we can look on the back of the engine where is timing chain tensioner it a hydraulic tensioner and its gasket could be leaking surprisingly and i agree with that it on most of these i see those leaks surprisingly this one is absolutely dry i already looked from underneath this one is exception to the rule if we stay together on this side and I will bring that light for one last time right underneath the alternator hopefully you see the water pump pulley so the water pumps they don't last forever is it the common problem I will not say I will say it's common maintenance but the word common is there so these water pumps are right here driven by this belt nicely on outside it's not a timing belt moving it because this engine has timing chain so this is a relatively easy repair a little note also what do you see right here this doesn't have an automatic belt tensioner but it's manual basically through this alternator. It's right here in front of you. Maybe that light was actually not helping us. You see the tensioner? Right here. The next item is related to the ignition.\"),\n", + " Document(metadata={'filename': 'audio-1', 'duration': '6-9 minutes'}, page_content=\" 100% say that these engines to ZRFs they have it's a common that they are misfires detected you will get that check engine light and then P0 whatever codes for misfire on the multiple cylinders or on the one only and so on and so on this vehicle the owner who brought it first time here wrote it in the comment or told me in the text message he said yeah that is there is a history with misfires on this engines on this engine particle engine and there is already one or multiple coils installed as a part of that detail inspection I confirmed that I can see that number two might be Toyota but it's not matching the way it's dirty so it was replaced I believe these are Terta Danzos yes made in Japan now what will shock you somebody was taking care of that misfire they replaced the coil and to my amazement well I was not amazed about this they did obviously replace the spar plugs To my amazement they put completely wrong spark plugs in it 2009 2ZRFE 1 liter engine and I will be not discussing in this video whatsoever that 2 liter it different beast So we focus on most common engine and the most common problems in these Corollas. So somebody put in it NGK. This engine is supposed to have only Denso SC20HR11. Did I say it correctly? SC20HR11. It's already coming. I sent the report, detailed report to the owner. I said no, that doesn't belong there. It is nice and new, but it doesn't belong there. There's supposed to be only iridium acetyl-HR11. What I pulled out, newly looking, NGK, ILKAR7B11 non-iridium plug. Why is it there? Well, because somebody was in a hurry, They then maybe had no access to the SC20HR11, but most likely they wanted safe money. This is way cheaper than Iridium's power plug which goes up to 16 bucks a piece. This one maybe was 8. Eight dollars stands for somebody made 32 dollars. Like that, just cutting corners. So no way, the owner already said.\"),\n", + " Document(metadata={'filename': 'audio-1', 'duration': '9-12 minutes'}, page_content=\" We will put the correct spark plugs. I ordered them. They are on the way. Meanwhile we are making this video. And these misfires were correctly repaired by replacing the coils. It actually the service who did this work fixed the problem. They replaced the coil which was failing. So I agree with them. That's fine. just for God's sake if you can please put correct spark plugs in that engine so the owner will not have problems in the future I already inspect the remaining areas as you know me throttle body is dirty the muff it's dirty engine air filter it's on the dirty side we are going to replace it brake fluid which cannot see it's opening from here brake fluid is also dirty the battery is incorrect it's supposed to be bigger you can even see it doesn't fit in that holder i even tested it state of health it's only like 70 percent so that should be replaced too but this i'm just giving you walk around let's go back to the most common problems. Here this vehicle still have a automatic transmission dipstick If you will stick with the advice which is written on it which says no need to replace the ATF blah blah blah blah blah well don do it maintain your fluid in your transmission don't listen to those crazy stickers they were putting on these at those years that's all nonsense we know we need to change the engine oil and maintain that and we need we know that when the automatic transmission fluid is burned it's contaminated it also needs to be replaced but these automatic transmissions are not part of this video as the common problems it's exactly opposite I don't remember at the dealer and here in my mini shop I don't remember ever have one failed I'm not saying they don't but it's not a common what is common they last actually for the lifetime of the vehicle just give them nice and clean oil another common problem we will discuss right here and it actually will be two of them right in middle of your screen. Number one front wheel bearing\"),\n", + " Document(metadata={'filename': 'audio-1', 'duration': '12-15 minutes'}, page_content=\" This vehicle has only 90,000 miles but guess what? Both bearings are already showing very small play. This one I don't know why but as usually this one is smaller. It starts on this side and the other ones follow. Let me show you. Hopefully you will be able to hear it. That's a lift. There is definitely, I will say like a millimeter if I can say that, on that diameter here the movement. So it's already in the comments and we will be dealing with that problem soon. That's unfortunately pretty costly if you have to replace bows from wheel bearings. And I said there will be two items right in front of you in the middle of screen. Wheel bearing right here and the struts. Struts, I don't know why, are relatively common problem on these. Not the rear ones. The rear has also struts. I never replaced one of them ever you can see it right here nicely it's a very simple design here nothing really go bad here except we will be coming back there but for different item So the struts on both sides these ones are totally fine Now how you will see your struts are bad Well the vehicle will start kind of bouncing around but mainly even if it's on the ground You will see there will be oil even the towers below here. It will be all wrapped in the oil. When that goes it starts leaking pretty crazy and everything will be wet here. So these ones are still original OEM and they are still holding pretty good. Where we were together looking on that engine bay you didn't see any power steering reservoir also we were looking on that water pump and the belt and the belt was kind of simply going around that's because this vehicle was equipped or is equipped with electric steering apparently there were some failures on it and it was to certain degree common problem there was campaign or it was being taken care of I personally don't see it so I'm hesitating if it should be included in the common problems I don't\"),\n", + " Document(metadata={'filename': 'audio-1', 'duration': '15-18 minutes'}, page_content=\" have these problems coming to me so I will say no but I wanted make you aware that there were definitely in certain years with that electric steering there were problems with it. Last but not least unfortunately you will discover problem and it's a common problem and you will discover it in the vehicle on your dashboard. It's not this problem. This is some kind of incredible improvement by the owner. This doesn't count. So you will be driving your vehicle and suddenly you will get that check engine light on. You will have a code for EVEB and you will hope it's just a loose filler cap or the ratchet is broken on that filler cap. You will hope it's the code and in this case it will be code for a very small leak. But unfortunately these are pretty common for filling right here. I said we will be coming back here. This is that entire evap canister. It's a complicated unit and it's very expensive. So if you ever have evap codes which are saying the purge flow is incorrect or something like that pay for a correct diagnosis because these from dealer can be extremely pricey So what is my conclusion for 2009 to 2013 Corolla generation? What's conclusion? Will I buy one or will I say no? Way too problematic vehicle. I think with the correct maintenance and paying at least a little bit of attention to the engine and keeping that oil lever correctly, I think these are super great vehicles to drive from point A to point AB. Nothing exciting obviously, but they are gas savers, they are reliable and I will say in relativity of automotive world they are super cheap to maintain in my opinion the brake job everything it's easy you have a rear drum brakes in the back you can drive a lot of miles on those this one has brand new brake pads almost in front might be the first replacement at 90 000 miles The rear brake shoes I already opened that are still 2-3mm might be purely theoretically original too.\"),\n", + " Document(metadata={'filename': 'audio-1', 'duration': '18-21 minutes'}, page_content=\" this without any hesitation buy one of these to just get to the work and back and save a lot of money on the gas that's my feeling you please share underneath the video your experience with others because that's why we filming this creating community of Toyota enthusiasts who share their own own experience if you like the video give it a thumb up and be subscribed i will always have a lot of new stuff coming your way thank you for watching and have a great day my friend\")]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/data/documents.json b/data/documents.json index bfe9f6d9..8e9da473 100644 --- a/data/documents.json +++ b/data/documents.json @@ -1 +1 @@ -{"doc_names": ["Car-Repair-Receipt-repair", "Car-Repair-Receipt-service", "Car-Repair-Receipt-tire", "Car-Repair-Receipt-tuning", "Car-Repair-Receipt-wash", "corolla-2020-toyota-owners-manual", "data\\dodge-challenger-auto-body-repair-after", "data\\dodge-challenger-auto-body-repair-before", "How to change engine oil and filter on TOYOTA Corolla", "How to change front brake pads on TOYOTA Corolla", "How to change rear windshield wipers on TOYOTA Corolla", "How to change spark plugs on TOYOTA COROLLA", "data\\hyundai-sonata-auto-body-repair-after", "data\\hyundai-sonata-auto-body-repair-before", "data\\IMG_1436", "data\\IMG_1437", "data\\IMG_1438", "data\\IMG_1440", "data\\IMG_1441", "data\\IMG_1442", "data\\IMG_1443", "data\\IMG_1444", "data\\pontiac-vibe-auto-body-repair-after", "data\\pontiac-vibe-auto-body-repair-before", "data\\toyota-tacoma-auto-body-repair-after", "data\\toyota-tacoma-auto-body-repair-before"], "docs_id": ["8cb89c7137934d26bb4d277bacf3502c", "b71d912e8f2e487ebe8234e5b115261a", "85899825f6564cd2ace41045b9b3933a", "0f4160aa7a7544b9912203707684b580", "5dfef1a8108d42239dfacb145ff65b47", "cf8d2cd0ff2e41f28c6ca6e831ac11e0", "9f13671afa5b4572b3d87a974e9ae987", "b61bf58bed3441b98d017a8273592a6e", "2d60dcf3360a4d3f8bdf26ae7d7a7710", "c041d9b8d4d34845b1eec7076b9e397a", "51dfede7f1424c9a860aa6d0ac2aba9d", "9d5ae90bdb2f42c9a4a7eff8222f9299", "38e241f38b964f6598f68a7bdc7d6fd0", "3e28189980ef48e3924225a4795ee4f6", "b503ccb23a6140e4b3479cd0540bc7db", "56a6e12c0f4e492abf84ed420332dd53", "278b4e52edae4a34be3e6ac8b8c6fea0", "16b5cb0fd5994cb3b05881c2bd7f079b", "4f26ca03b4f74f0287cb4ec163d8a8fe", "74987f862eaf43008779404633d00352", "db78336a07d3424badbb508bdbc951dd", "4c993794c7244ce6a29bb4a6e36b035f", "004cceb280574f818e3f654bb70539ab", "a1f5ec1368c845e3b8f6c31fb7116238", "d193544fc7ce45139b3f1e85d9edbde2", "06c837414be84b49b84b505628927814"], "num_pages": [1, 2, 2, 2, 1, 588, 1, 1, 6, 7, 6, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]} \ No newline at end of file +{"doc_names": ["audio-1", "audio-2", "Car-Repair-Receipt-repair", "Car-Repair-Receipt-service", "Car-Repair-Receipt-tire", "Car-Repair-Receipt-tuning", "Car-Repair-Receipt-wash", "corolla-2020-toyota-owners-manual", "data\\dodge-challenger-auto-body-repair-after", "data\\dodge-challenger-auto-body-repair-before", "How to change engine oil and filter on TOYOTA Corolla", "How to change front brake pads on TOYOTA Corolla", "How to change rear windshield wipers on TOYOTA Corolla", "How to change spark plugs on TOYOTA COROLLA", "data\\hyundai-sonata-auto-body-repair-after", "data\\hyundai-sonata-auto-body-repair-before", "data\\IMG_1436", "data\\IMG_1437", "data\\IMG_1438", "data\\IMG_1440", "data\\IMG_1441", "data\\IMG_1442", "data\\IMG_1443", "data\\IMG_1444", "data\\pontiac-vibe-auto-body-repair-after", "data\\pontiac-vibe-auto-body-repair-before", "test_rec", "data\\toyota-tacoma-auto-body-repair-after", "data\\toyota-tacoma-auto-body-repair-before"], "docs_id": ["4df88a70d30747639ad4acbec1919415", "320efd7dcc8342caa948797de7209764", "d1b538acbcd9495aae86c36306eeaf33", "17a7ece1d42243a597bd2e8c9fdeaafd", "87c8f997467649329e478155c8a26d92", "115916bb36ba49b499e1908a4e711a11", "8abf7e7a36ca4ca490da6c3f4d7b2596", "50f42432f44c431f97e9b420e2b48d8a", "73f10135c4624c148dee21de6183bf4c", "32ab58213aba442bb2ba3a4c6b236ba9", "831ee7596d0645cd8c9e096ac90f10c5", "ea2cf4e23689435092337e9f7893369c", "b51984d12cb145cb9746aca78604ce2b", "7bc00aeaec514037aab955ac20e14372", "d21528b7fe784a41b564d57b8a29a02b", "9a42e1cb1883421e934ff04f0cdb568f", "8c9973a7779747d986e4476ffc2a15e9", "e4c3ec359f974cd5b9ac8dbdba24c0c6", "6a9295089d704def89d8996c43bd5bd8", "8bd1b0b9b73a4f2faa1223f17762615a", "8514bcc0db2b48889b179cdc0dcdf5ca", "60b1c7e496644bc3afd2be26b2d32989", "caa3e181e2b94eb79241882439c470e1", "2ba154fca6624423b586e897a111ee9f", "7da26f8b65664418834882533f89bb8a", "ccc1a2a2bedd428eaf0a227cb052c3c2", "93a34ea4bb1d47fe94ec3d3990f5e49c", "00b58e4a55b44a11add00384c789a3e3", "1e7d44cec5c548d8a513bc228a7cf9a3"], "num_pages": [7, 7, 1, 2, 2, 2, 1, 588, 1, 1, 6, 7, 6, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]} \ No newline at end of file diff --git a/data_ingestion/__pycache__/utils.cpython-311.pyc b/data_ingestion/__pycache__/utils.cpython-311.pyc index 522417b79c857c6ac567cb56378a449e7e767d31..cdd6c55a1ee4d1666e3c07992433412f624a8e25 100644 GIT binary patch delta 6582 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 delta 2817 zcmZ{mZ%kX)6~Nzp&wjSSHa0fc=3g-e!ZQH_r7Wd10b06*HS4Mrts&W5!+jDf6wd53)-?fC@+!aj%N!>x@NM5N>oYL zPS(QHnGR%vlR+ZMk{(IL3LtAWi~>Vrp^`hhL91{k5Wz*ZWe!LwwtO>dxqq)bE5Z>M$o9_ZJfwM=%< z23@0#@YkekNtNCPvgl2+W{`E#R@wr-d#Q3n(%N{B{3a(#13#!-s`SIMSq-9=hb-r; zxUpby)$$f0DV|VsY6Nwy{O{`5NGor#O;iO@(7uZ{{-o_9spDU@|AVyih$HInL{%5S zumGB&u^>-40@gcWI9NRGXd>V0hpuK}co^&sgqUxjEd2^ROgqg@FUA4v%jQFi>U1ta z(L$IlWb|yF-3^K{zFl#g4DyM}pOSuFs;qAl^D0ctYn!J@bTX~;i5cB66!0i7vBw#( zj>71{;{DFI$RKtZE?G><#2iG-Vc=oIrhukvcM;|HkAdtMA9gQ8L_W8KivM=Ek)SYi z>e=ZW)#IrQyp}xxcFAIgXIv(o+^FsVK3^SEkARpx#5bzHPrk|HzP-Y_lmIU~=Gqt-FDIIYj;Q@O0Bvco8GP9+R|pnvC8$N2j`SOmZ7^I1=T zdamg3XB5{AbPX9Gj^~NMKJp^}ec(`K9f(*Q(ZW5!?gF|nCt!E>3bBKDHj&X;E67cE zUSG_|;g2Pz^Ep;NuPA5?6#%h?Rt{FpG}9CLofzODl!Nv-m_3X3Zvd90kG=IDdcz-h z!z+;uFMm6@2C;mtYD1=TYk{*AAcwP6m zd9v%5Ds`Tf@&TUh4)CL~ZxAP6j`;b7m@ifjbL_NJRn)x-p?wv@E7~2>X-~d!cO*%( zRX^&PA@#h}6LwuM_VA|OasF{n)h%?hB+8%eZL^w6X8v|w?Cq^g!=wz~!{+$sy#d>& zn42uaU42v426khBFT!-DZ&dz7;(zXIhn;@bH&pmJ+Ps8#8K8MhIcJ!*bjrxn6oWKN z6H_~$`aWb-Bk5Oa5vaNRA7pV3O6luAv3R4v!_5}+C|RL z9Dn8ZXrUWz#6oZlrX`t5>+Bc8401$dn(2W2(z6C+Im6TvOEw*|MlKsibCV?5cR_Ac z14PE%fO7gZ-cYMXJjrsII8E^f`t6m!1HU(Mf(3<7^-tJB)_ciSDO9}BKSYX84SYgI z-)(3;=u|E{EeAce%RYkKQ+vpvTyaA*)o7RY_Kn<@c?Ake*D(*K$chYl7ESs(He-7>?D)-&BH-y!>CW}c;1q{We zHNuwo!*{h7)<7#x#&jj9xEe))84N2!bBMaRenDuCn>L+~>R7sQ1E7nPG3|Ig;#$~6 zurM5e-H;BK!|B_p=4-wc=zIkX|0{9p(EFsWxG{8^G~#C2+lW5^ZrcYU}w>=X5MumV*Lw?T!yOs1E6rbw$S7_MB2@@e?5$RYDSfBv$Jr()r$q zL~dbaDO-7obW}P&v8WuC9wVm|Y7Oz;PCx(Ku)Uyuon>K0HjfA+G6<|=&0>0uR3?>9 zuvGqJ+|Uzj`UH!hT0`KKtJzGMPMKEt7_gHjnG;`IQ%R)LYy@q@MxmX@V^O0r^&ZP{Hv zbbinI%#j}-Uuoa0(KhVSO?z}*{I*LnxzQrJS<|&)@7}a`ukZf0x3{+(u5*d=flWu_ zPmGm4W9trWUDk|BSn#i!N8Iu|?v{~0D`YiRG(7%_k1qb%$Qbz(?;Cxia1sQ}g;+(1 zJLVAf5&$eBxGElHZZVkA#o!TChY;d((2l)35%?bi8%2oA4L`W-1mbbT8HC8h3)sV3 z!nEwe>ro^+!*pVs2$AI?eerYuKl@N7M;Frie)bUzA=r|UmHEH!+2WS5k#NawBef;z z8vK&GW!)9ta78v chunk_length_ms: + # Calculate the number of chunks + num_chunks = audio_duration_ms // chunk_length_ms + (1 if audio_duration_ms % chunk_length_ms != 0 else 0) + + for i in range(num_chunks): + start_ms = i * chunk_length_ms + end_ms = min(start_ms + chunk_length_ms, audio_duration_ms) + chunk = audio[start_ms:end_ms] + chunk_filename = f"{chunk_folder}/{base_filename}_chunk{i+1}.mp3" + chunk.export(chunk_filename, format="mp3") + chunk_paths.append(chunk_filename) + if print_output: + print(f'Exporting {chunk_filename}') + else: + # If audio duration is less than the chunk duration, store the whole file as a single chunk + chunk_filename = f"{chunk_folder}/{base_filename}_chunk1.mp3" + audio.export(chunk_filename, format="mp3") + chunk_paths.append(chunk_filename) + if print_output: + print(f'Exporting {chunk_filename}') + + return chunk_folder, chunk_paths + +def transcribe_audio_chunks(audio_file_path, chunk_duration_minutes): + # Split the audio file into chunks + chunk_folder, chunk_paths = split_audio_by_duration(audio_file_path, chunk_duration_minutes) + + documents = [] + for chunk_path in chunk_paths: + # Transcribe the chunk + transcript = audio_to_text(chunk_path) # Assuming this function exists + + # Extract the base filename and chunk index using regex + chunk_filename = os.path.basename(chunk_path) + match = re.search(r'(.*)_chunk(\d+)\.mp3$', chunk_filename) + if match: + base_filename = match.group(1) + chunk_index = int(match.group(2)) + else: + # Default values in case of unexpected filename format + base_filename = os.path.splitext(chunk_filename)[0] + chunk_index = 1 # Assuming it's the first chunk + + # Calculate the chunk's start and end times in minutes + start_min = (chunk_index - 1) * chunk_duration_minutes + end_min = chunk_index * chunk_duration_minutes + actual_end_min = min(end_min, (len(AudioSegment.from_file(audio_file_path)) // 60000)) # To handle the last chunk's actual duration + + # Create a document with the transcript and metadata + metadata = { + "filename": base_filename, + "duration": f"{start_min}-{end_min} minutes" + } + document = Document(page_content=transcript, metadata=metadata) + documents.append(document) + + # Delete the chunk folder after processing + shutil.rmtree(chunk_folder) + + return documents + + +# creating a function to create audio document +def create_audio_document(audio_file_path, chunk_duration_minutes=3): + documents = transcribe_audio_chunks(audio_file_path, chunk_duration_minutes) + return documents + + +#-----------------------------------------------------OTHERS-------------------------------------------------------------- def save_embedded_data(embeddings, key="data"): embeddings.save_local(f"vec-db/index/faiss_index_{key}") @@ -223,6 +330,16 @@ def load_documents_from_directory(directory_path: str): # adding the document name to the doc_names list doc_names.append(doc[0].metadata['filename']) print(f"Document {doc[0].metadata['filename']} loaded") + elif extension in audio_doc: + # creating an audio document + doc = create_audio_document(path) + # appending the document to the documents list + documents.append(doc) + # appending the number of pages in the document + num_pages.append(len(doc)) + # adding the document name to the doc_names list + doc_names.append(doc[0].metadata['filename']) + print(f"Document {doc[0].metadata['filename']} loaded") # so we need to create a document id for each document docs_id = [uuid4().hex for i in range(len(documents))] @@ -282,11 +399,8 @@ def add_documents_to_vector_store(embeddings, documents: list, docs_id: list, nu def search(db, query, k=3): docs = db.similarity_search(query, k) all = "" - pages = [] + info = [] for doc in docs: all += f"{doc.page_content}\n" - try: - pages.append(doc.metadata['page']) - except: - pages.append(doc.metadata['filename']) - return docs[0].page_content, all, pages + info.append(dict(doc.metadata)) + return docs[0].page_content, all, info diff --git a/loggings/app.log b/loggings/app.log index bcb51baf..f7bc1441 100644 --- a/loggings/app.log +++ b/loggings/app.log @@ -93,3 +93,44 @@ 2024-08-08 21:58:08,023 - INFO - Searching for scratches on the door and fender area 2024-08-08 21:58:08,277 - INFO - Search completed 2024-08-08 21:58:08,277 - INFO - Page content: The image shows the front end of a car that has sustained damage. The bumper appears to be misaligned and there are visible signs of a collision, with dents and scratches on the bodywork. Parts like the grille and headlights also seem affected, indicating that the vehicle may require repairs. +2024-08-09 16:16:47,682 - INFO - Loading the embeddings +2024-08-09 16:16:47,685 - INFO - Load pretrained SentenceTransformer: BAAI/bge-small-en +2024-08-09 16:16:50,788 - INFO - Embeddings loaded +2024-08-09 16:16:50,788 - INFO - Loading data from ./data +2024-08-09 16:24:03,569 - INFO - Loading the embeddings +2024-08-09 16:24:03,577 - INFO - Load pretrained SentenceTransformer: BAAI/bge-small-en +2024-08-09 16:24:06,558 - INFO - Embeddings loaded +2024-08-09 16:24:06,559 - INFO - Loading data from ./data +2024-08-09 16:24:42,259 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:24:49,470 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:24:57,300 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:25:05,008 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:25:11,880 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:25:19,119 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:25:24,638 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:01,949 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:09,930 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:18,160 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:27,045 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:36,238 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:44,140 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:26:51,270 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:28:22,852 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-09 16:28:34,018 - INFO - Data loaded +2024-08-09 16:28:34,018 - INFO - Creating vector store +2024-08-09 16:28:44,938 - INFO - Vector store created +2024-08-09 16:28:44,938 - INFO - Saving the vector store +2024-08-09 16:28:44,944 - INFO - Vector store saved +2024-08-09 16:29:51,238 - INFO - Receiving the search query +2024-08-09 16:30:31,677 - INFO - Searching for P0 whatever codes for misfire on the multiple cylinders or on the one only +2024-08-09 16:30:33,009 - INFO - Search completed +2024-08-09 16:30:33,009 - INFO - Page content: 100% say that these engines to ZRFs they have it's a common that they are misfires detected you will get that check engine light and then P0 whatever codes for misfire on the multiple cylinders or on the one only and so on and so on this vehicle the owner who brought it first time here wrote it in the comment or told me in the text message he said yeah that is there is a history with misfires on this engines on this engine particle engine and there is already one or multiple coils installed as a part of that detail inspection I confirmed that I can see that number two might be Toyota but it's not matching the way it's dirty so it was replaced I believe these are Terta Danzos yes made in Japan now what will shock you somebody was taking care of that misfire they replaced the coil and to my amazement well I was not amazed about this they did obviously replace the spar plugs To my amazement they put completely wrong spark plugs in it 2009 2ZRFE 1 liter engine and I will be not discussing in this video whatsoever that 2 liter it different beast So we focus on most common engine and the most common problems in these Corollas. So somebody put in it NGK. This engine is supposed to have only Denso SC20HR11. Did I say it correctly? SC20HR11. It's already coming. I sent the report, detailed report to the owner. I said no, that doesn't belong there. It is nice and new, but it doesn't belong there. There's supposed to be only iridium acetyl-HR11. What I pulled out, newly looking, NGK, ILKAR7B11 non-iridium plug. Why is it there? Well, because somebody was in a hurry, They then maybe had no access to the SC20HR11, but most likely they wanted safe money. This is way cheaper than Iridium's power plug which goes up to 16 bucks a piece. This one maybe was 8. Eight dollars stands for somebody made 32 dollars. Like that, just cutting corners. So no way, the owner already said. +2024-08-09 16:31:46,698 - INFO - Receiving the search query +2024-08-09 16:31:50,759 - INFO - Searching for After you let it sit for five minutes, get a towel, pull your dipstick out and clean it off +2024-08-09 16:31:51,093 - INFO - Search completed +2024-08-09 16:31:51,094 - INFO - Page content: After you let it sit for five minutes, get a towel, pull your dipstick out and clean it off. Put it back in. Make sure it's pushed down all the way. And then pull the dipstick back out. Okay, if we look at the dipstick, what you're looking for is the oil. You can see the oil's over here. There's low and there's high. So that dot right there means that the oil is low and you need to fill it up. That dot right there means the oil is high and it means that you have it completely full. Anywhere in between is good. I prefer trying to get it to the high. Now sometimes it's hard to see how much oil is on here, especially this brand new oil and especially this synthetic oil. So if you flip this over, you actually get a better look and you can see the oil goes right there. So we're right on the high, which is perfect. So we don't have to add oil or anything. If yours is too low, add a little bit of oil and check the level again. If you end up adding a little bit too much oil, that's not a big deal. If you add over a quart of extra oil, then you have a problem and you probably have to remove some of it because that could actually cause engine problems And that is the complete guide to changing oil in your car or truck Hopefully after this video you have no questions but if you do have questions just comment below I answer every comment and question Also if you end up doing your first oil change after watching this video, definitely let me know because I love to hear that stuff. Hopefully this video was helpful. If it was, remember to give it a thumbs up. Up on the screen are going to be other videos. You can find the links to those videos as well as any links to any tools that I used in this video in the description. The top tip for this video is, well, where do I put all my oil that I drained out from my filter and from the car? And the answer to that is you want to dispose all of your oil responsibly. You can see here in the corner of my garage I have all these old oil containers. I really need to make an oil run. But what you do is you just fill up a container. It could be an old oil container, it could be a milk container, orange juice, whatever you have. And what you do is you just fill up these containers and you go to your local auto parts store, your local garage, your local recycle center, places that sell the oil like Walmart, most of those places will take the oil and they'll take it for free so that they could recycle it so it doesn't become an environmental hazard. +2024-08-09 16:32:37,268 - INFO - Receiving the search query +2024-08-09 16:32:44,379 - INFO - Searching for changing oil +2024-08-09 16:32:44,664 - INFO - Search completed +2024-08-09 16:32:44,665 - INFO - Page content: Oilchange pouring new oil in the engine + diff --git a/vec-db/index/faiss_index_data/index.faiss b/vec-db/index/faiss_index_data/index.faiss index 80736afb75f7ce1168d81f9b93523a58ae867ef4..536d738aeeb21cc34df62ae0afa70e6d4cd34268 100644 GIT binary patch delta 35694 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

p9d9}EK_%vE*`v5*kW;s*k z%RDZzrykzdc|hZYiK1$T4xThY8?v*b|4k2;3D_^`{1D4 zF1F{{Gf-a}&-rzQ(ManmK6m1LPUB1>YMNGovV#=$X8q1&j;Lect?BF!y<%}k{4LPX zv}CiVWkG5CJSKUQC*p1Gy_ok&b3E8-D^AxrK!rCGaD8tXrRW&jO0_Ls?vRmSNZ)aS~eMCt`qxHRz{Dl6dP}D!EVw$J&lU=EvtGh`;cutC6=@v=!~Nl!Qb` zIv~$A^DZtnNr$zW XxmF}K$se^*|K>uX5vM38{sR09uX-Lu delta 12487 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 F{s&1@npXe- diff --git a/vec-db/index/faiss_index_data/index.pkl b/vec-db/index/faiss_index_data/index.pkl index 5d397d3786ad0c0a2a8fa4999b96b8be17e874fc..1bb9367d7365a36467b384b039ba19dd9bb06f51 100644 GIT binary patch delta 96355 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 delta 60776 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