[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"footer-primary":3,"footer-secondary":93,"footer-description":119,"ai-ai-speech-transcription":121,"ai-ai-speech-transcription-next":166,"sales-reps":180},{"items":4},[5,29,49,69],{"id":6,"title":7,"url":8,"page":8,"children":9},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",null,[10,15,20,25],{"id":11,"title":12,"url":8,"page":13},"fcafe85a-a798-4710-9e7a-776fe413aae5","Headless CMS",{"permalink":14},"/solutions/headless-cms",{"id":16,"title":17,"url":8,"page":18},"79972923-93cf-4777-9e32-5c9b0315fc10","Backend-as-a-Service",{"permalink":19},"/solutions/backend-as-a-service",{"id":21,"title":22,"url":8,"page":23},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":24},"/solutions/product-information-management",{"id":26,"title":27,"url":28,"page":8},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus",{"id":30,"title":31,"url":8,"page":8,"children":32},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f","Resources",[33,37,41,45],{"id":34,"title":35,"url":36,"page":8},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":38,"title":39,"url":40,"page":8},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":42,"title":43,"url":44,"page":8},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":46,"title":47,"url":48,"page":8},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":50,"title":51,"url":8,"page":8,"children":52},"d61fae8c-7502-494a-822f-19ecff3d0256","Support",[53,57,61,65],{"id":54,"title":55,"url":56,"page":8},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":58,"title":59,"url":60,"page":8},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":62,"title":63,"url":64,"page":8},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":66,"title":67,"url":68,"page":8},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":70,"title":71,"url":8,"page":8,"children":72},"49141403-4f20-44ac-8453-25ace1265812","Organization",[73,78,84,88],{"id":74,"title":75,"url":76,"page":77},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About","/about",{"permalink":76},{"id":79,"title":80,"url":81,"page":82},"b84bf525-5471-4b14-a93c-225f6c386005","Careers","#",{"permalink":83},"/careers",{"id":85,"title":86,"url":87,"page":8},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":89,"title":90,"url":8,"page":91},"8d2fa1e3-198e-4405-81e1-2ceb858bc237","Contact",{"permalink":92},"/contact",{"items":94},[95,101,107,113],{"id":96,"title":97,"url":8,"page":98,"children":100},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",{"permalink":99},"/cloud-policies",[],{"id":102,"title":103,"url":81,"page":104,"children":106},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License",{"permalink":105},"/bsl",[],{"id":108,"title":109,"url":81,"page":110,"children":112},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":111},"/terms",[],{"id":114,"title":115,"url":81,"page":116,"children":118},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":117},"/privacy",[],{"description":120},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"id":122,"slug":123,"vimeo_id":124,"description":125,"tile":126,"length":127,"resources":8,"people":8,"episode_number":128,"published":129,"title":130,"video_transcript_html":131,"video_transcript_text":132,"content":8,"status":133,"episode_people":134,"recommendations":146,"season":147,"seo":165},"be92a983-6a6a-411f-8f07-2cba4aa9308c","ai-speech-transcription","945762260","Generate transcripts from audio files with this custom operation, powered by Deepgram.","cd890799-ed45-4240-a12f-d5790cc4c35a",6,7,"2024-05-16","AI Speech Transcription","\u003Cp>Speaker 0: The Directus AI speech generation operation allows you to create realistic sounding speech from text inside of your director's project. This extension is powered by Jenny, so you will need an API key in order to follow along. Now here I have a collection called ads, and I've created just a very short textual ad that I want to run for directors. However, it's gonna go in something like a podcast or a audiobook or something, so it needs to be in audio form. So what we're gonna do is create a manual flow where when we click a button here it will go off and generate that audio for us.\u003C/p>\u003Cp>So let's go over to our flows and create a new flow, generate audio, with a manual trigger on the ads collection. This will return just the ID of the item where the button is pressed. We obviously want the text. So the first thing we're gonna do is read data and we will read data from the ads collection, specifically the ID from the from the item whether it was pressed. So trigger dot body dot keys zero.\u003C/p>\u003Cp>So this will return the text and the currently empty file field. Then we can go straight away and send this off to the AI speech generation operation. Now we do need a Jenny API key, but I have one that I made earlier. And in here, we put in our text with a maximum of 500 characters. And I am gonna go ahead and just say, hey, that last operation that fetched all the data, go grab the text value out of it.\u003C/p>\u003Cp>You get to pick one of the selected speakers, so we'll use Brian Lee junior here and you get to specify the speed at which the, the speech happens. So this will return just a URL of an mp3 on the web. Next, we need to import it into this Director's project, and we can do that using the webhook request URL operation. So we'll make a post request to this directus URL trigger dotlws.i. So that's your specific project URL/assets, not assets, sorry, slash files slash import.\u003C/p>\u003Cp>That's the endpoint. It's a post request, and then the body here, we are going to just pass in the URL. Now just a note that for this project I've made file creation publicly accessible, you may need to lock down those permissions and provide your authentication headers here, but for ease I've turned that off for this demo. So what this will do is make that API call and return with the whole payload of the brand new director's files item that was just created, and what we wanna do is extract the ID and save that back to our ads item. So let's update the ads item here.\u003C/p>\u003Cp>We wanna update trigger.body.keys 0, and what we wanna do is just update the file value, and the location of the ID in the returned JSON payload is in data dot data dot ID. That is the whole flow. We click the button. We grab the whole item, which includes the text. We generate the text, which results in an m p 3.\u003C/p>\u003Cp>We import the m p 3 and save the m p 3 back to the item. So let's see if this works. Fingers crossed, we're now going and generating that audio. It's going off to that 3rd party vendor creating that realistic sounding audio for us, importing it, and then finally adding it here inside of the file except when it doesn't. Why is that?\u003C/p>\u003Cp>Let's take a little look together. Let's take a look at the log. What happened there? Trigger, because I got completely the wrong URL of just my director's project here. Tunnel is actually where this project is located.\u003C/p>\u003Cp>So let's run that one last time, generate audio. We'll give that just a moment once again to do its thing in that time I'll tell you a joke I'm not a funny person so I won't be doing that but that allows me to stall for long enough for this operation to complete and that of course is our, is our wav file, our actual audio file there containing our ad. So that is a little bit about how the, speech generation operation works using directus AI. We hope you enjoy it. I see loads of use cases for this, but the primary one being either like video voiceovers at scale or programmatic ads or stuff like that.\u003C/p>\u003Cp>So I hope you found this interesting. I'll see you in the next video.\u003C/p>","The Directus AI speech generation operation allows you to create realistic sounding speech from text inside of your director's project. This extension is powered by Jenny, so you will need an API key in order to follow along. Now here I have a collection called ads, and I've created just a very short textual ad that I want to run for directors. However, it's gonna go in something like a podcast or a audiobook or something, so it needs to be in audio form. So what we're gonna do is create a manual flow where when we click a button here it will go off and generate that audio for us. So let's go over to our flows and create a new flow, generate audio, with a manual trigger on the ads collection. This will return just the ID of the item where the button is pressed. We obviously want the text. So the first thing we're gonna do is read data and we will read data from the ads collection, specifically the ID from the from the item whether it was pressed. So trigger dot body dot keys zero. So this will return the text and the currently empty file field. Then we can go straight away and send this off to the AI speech generation operation. Now we do need a Jenny API key, but I have one that I made earlier. And in here, we put in our text with a maximum of 500 characters. And I am gonna go ahead and just say, hey, that last operation that fetched all the data, go grab the text value out of it. You get to pick one of the selected speakers, so we'll use Brian Lee junior here and you get to specify the speed at which the, the speech happens. So this will return just a URL of an mp3 on the web. Next, we need to import it into this Director's project, and we can do that using the webhook request URL operation. So we'll make a post request to this directus URL trigger dotlws.i. So that's your specific project URL/assets, not assets, sorry, slash files slash import. That's the endpoint. It's a post request, and then the body here, we are going to just pass in the URL. Now just a note that for this project I've made file creation publicly accessible, you may need to lock down those permissions and provide your authentication headers here, but for ease I've turned that off for this demo. So what this will do is make that API call and return with the whole payload of the brand new director's files item that was just created, and what we wanna do is extract the ID and save that back to our ads item. So let's update the ads item here. We wanna update trigger.body.keys 0, and what we wanna do is just update the file value, and the location of the ID in the returned JSON payload is in data dot data dot ID. That is the whole flow. We click the button. We grab the whole item, which includes the text. We generate the text, which results in an m p 3. We import the m p 3 and save the m p 3 back to the item. So let's see if this works. Fingers crossed, we're now going and generating that audio. It's going off to that 3rd party vendor creating that realistic sounding audio for us, importing it, and then finally adding it here inside of the file except when it doesn't. Why is that? Let's take a little look together. Let's take a look at the log. What happened there? Trigger, because I got completely the wrong URL of just my director's project here. Tunnel is actually where this project is located. So let's run that one last time, generate audio. We'll give that just a moment once again to do its thing in that time I'll tell you a joke I'm not a funny person so I won't be doing that but that allows me to stall for long enough for this operation to complete and that of course is our, is our wav file, our actual audio file there containing our ad. So that is a little bit about how the, speech generation operation works using directus AI. We hope you enjoy it. I see loads of use cases for this, but the primary one being either like video voiceovers at scale or programmatic ads or stuff like that. So I hope you found this interesting. I'll see you in the next video.","published",[135],{"people_id":136},{"id":137,"first_name":138,"last_name":139,"avatar":140,"bio":141,"links":142},"82b3f7e5-637b-4890-93b2-378b497d5dc6","Kevin","Lewis","a662f91b-1ee9-4277-8c9d-3ac1878e44ad","Director of Developer Experience at Directus",[143],{"url":144,"service":145},"https://directus.io/team/kevin-lewis","website",[],{"id":148,"number":149,"year":150,"episodes":151,"show":162},"25c1b8ec-a696-4551-8d13-4e2abfbc7cb5",1,"2024",[152,153,154,155,156,157,122,158,159,160,161],"6aee5cdc-3d0a-4fa6-acee-49c1860a553d","50b4447b-73c7-4b49-9e70-d210595d1a7e","42784fad-29d4-4f01-a076-43f1817655b7","d948815e-2417-4319-814b-87d7c5fbdd43","2d94463a-5c39-4274-ba39-287e9059cc9c","afb17dd7-48b9-4297-ada8-f22c1daa82ce","afc8f09e-f82f-473d-8643-14176380ae52","3d978332-855b-4eb0-a878-b932e0f9d704","40e14c84-7b60-4fc2-a125-beec15e39a28","be07b8cd-0d0f-4713-affe-88c210c29d9a",{"title":163,"tile":164},"Directus AI","b3609dd7-2fea-4925-ae4a-8a4a69a1b64b",{"title":8,"meta_description":8},{"id":158,"slug":167,"season":148,"vimeo_id":168,"description":169,"tile":170,"length":171,"resources":8,"people":8,"episode_number":172,"published":129,"title":173,"video_transcript_html":174,"video_transcript_text":175,"content":8,"seo":176,"status":133,"episode_people":177,"recommendations":179},"ai-text-extraction","945762700","Extract text from image files within Directus Files with this custom operation, using Clarifai.","4a3c8606-c4d9-41c1-a9e3-5322f3cfc83a",3,8,"AI Text Extraction","\u003Cp>Speaker 0: The Directus AI text extraction operation will do exactly that. You feed it an image and it will extract text from that image. You can then do whatever you want with it, but in today's example, we're going to save the extracted text to the file description. And we and we're going to do this based on an event hook, a non blocking event hook whenever a file is uploaded. Now we're gonna not set up any extra configuration, but in the real, you would probably want a condition that, says this has to be an image file.\u003C/p>\u003Cp>Right now, it will trigger on every file, and the documentation of this extension will show you how to do that. So then we are gonna just go straight away and we are going to use the AI text extraction operation. And you have to provide your Clarify access token, which I made earlier, and provide a direct file URL. So your full director's project URL slash assets and then slash trigger dot key. So that is the file ID that has just been uploaded that has triggered this whole flow to actually begin.\u003C/p>\u003Cp>And this will return a couple of things, it will return the overall text, but it will also return different bounding boxes, so you can say, hey, only give me the text maybe in the top left or stuff like that, but we're gonna just take that overall summary, and we're gonna save it back to the image. So we are going to update the Directus files core collection, and we are going to update specifically the item whose upload started this whole thing, and we are going to set the description to last dot text, so that is the value from this is a is an object, text is a property within it, and that is the entire setup of the AI text extraction operation. Very nifty. So let's, try this out. Let's go to our file library here and let's upload a new file.\u003C/p>\u003Cp>Just moments later we can go in and we can see right here the description has been filled in. Now probably a very fair point the AI is not perfect and you'll see here finance manager. The f is missing, but it's not done a bad job. Perhaps in your real workflows, you'll want a a step of human intervention. This will still save loads of time for stuff like business cards, for written documents, for receipts and invoices, but do always make sure that you're checking the output is exactly what you need it to be.\u003C/p>\u003Cp>But that is the, the rundown of how the AI text extraction operation works. Hope you found this interesting, and I'll see you in the next video.\u003C/p>","The Directus AI text extraction operation will do exactly that. You feed it an image and it will extract text from that image. You can then do whatever you want with it, but in today's example, we're going to save the extracted text to the file description. And we and we're going to do this based on an event hook, a non blocking event hook whenever a file is uploaded. Now we're gonna not set up any extra configuration, but in the real, you would probably want a condition that, says this has to be an image file. Right now, it will trigger on every file, and the documentation of this extension will show you how to do that. So then we are gonna just go straight away and we are going to use the AI text extraction operation. And you have to provide your Clarify access token, which I made earlier, and provide a direct file URL. So your full director's project URL slash assets and then slash trigger dot key. So that is the file ID that has just been uploaded that has triggered this whole flow to actually begin. And this will return a couple of things, it will return the overall text, but it will also return different bounding boxes, so you can say, hey, only give me the text maybe in the top left or stuff like that, but we're gonna just take that overall summary, and we're gonna save it back to the image. So we are going to update the Directus files core collection, and we are going to update specifically the item whose upload started this whole thing, and we are going to set the description to last dot text, so that is the value from this is a is an object, text is a property within it, and that is the entire setup of the AI text extraction operation. Very nifty. So let's, try this out. Let's go to our file library here and let's upload a new file. Just moments later we can go in and we can see right here the description has been filled in. Now probably a very fair point the AI is not perfect and you'll see here finance manager. The f is missing, but it's not done a bad job. Perhaps in your real workflows, you'll want a a step of human intervention. This will still save loads of time for stuff like business cards, for written documents, for receipts and invoices, but do always make sure that you're checking the output is exactly what you need it to be. But that is the, the rundown of how the AI text extraction operation works. Hope you found this interesting, and I'll see you in the next video.","302dac60-4dda-4a4c-b9b5-fa7d27a506f0",[178],"80258ab7-b77c-4e91-bd2b-4b62ae993ebc",[],{"reps":181},[182,238],{"name":183,"sdr":8,"link":184,"countries":185,"states":187},"John Daniels","https://meet.directus.io/meetings/john2144/john-contact-form-meeting",[186],"United States",[188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237],"Michigan","Indiana","Ohio","West Virginia","Kentucky","Virginia","Tennessee","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","New York","MI","IN","OH","WV","KY","VA","TN","NC","SC","GA","FL","AL","MS","NY","Connecticut","CT","Delaware","DE","Maine","ME","Maryland","MD","Massachusetts","MA","New Hampshire","NH","New Jersey","NJ","Pennsylvania","PA","Rhode Island","RI","Vermont","VT","Washington DC","DC",{"name":239,"link":240,"countries":241},"Michelle Riber","https://meetings.hubspot.com/mriber",[242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,219,430,431],"Albania","ALB","Algeria","DZA","Andorra","AND","Angola","AGO","Austria","AUT","Belgium","BEL","Benin","BEN","Bosnia and Herzegovina","BIH","Botswana","BWA","Bulgaria","BGR","Burkina Faso","BFA","Burundi","BDI","Cameroon","CMR","Cape Verde","CPV","Central African Republic","CAF","Chad","TCD","Comoros","COM","Côte d'Ivoire","CIV","Croatia","HRV","Czech Republic","CZE","Democratic Republic of Congo","COD","Denmark","DNK","Djibouti","DJI","Egypt","EGY","Equatorial Guinea","GNQ","Eritrea","ERI","Estonia","EST","Eswatini","SWZ","Ethiopia","ETH","Finland","FIN","France","FRA","Gabon","GAB","Gambia","GMB","Ghana","GHA","Greece","GRC","Guinea","GIN","Guinea-Bissau","GNB","Hungary","HUN","Iceland","ISL","Ireland","IRL","Italy","ITA","Kenya","KEN","Latvia","LVA","Lesotho","LSO","Liberia","LBR","Libya","LBY","Liechtenstein","LIE","Lithuania","LTU","Luxembourg","LUX","Madagascar","MDG","Malawi","MWI","Mali","MLI","Malta","MLT","Mauritania","MRT","Mauritius","MUS","Moldova","MDA","Monaco","MCO","Montenegro","MNE","Morocco","MAR","Mozambique","MOZ","Namibia","NAM","Niger","NER","Nigeria","NGA","North Macedonia","MKD","Norway","NOR","Poland","POL","Portugal","PRT","Republic of Congo","COG","Romania","ROU","Rwanda","RWA","San Marino","SMR","São Tomé and Príncipe","STP","Senegal","SEN","Serbia","SRB","Seychelles","SYC","Sierra Leone","SLE","Slovakia","SVK","Slovenia","SVN","Somalia","SOM","South Africa","ZAF","South Sudan","SSD","Spain","ESP","Sudan","SDN","Sweden","SWE","Tanzania","TZA","Togo","TGO","Tunisia","TUN","Uganda","UGA","United Kingdom","GBR","Vatican City","VAT","Zambia","ZMB","Zimbabwe","ZWE","UK","Germany","Netherlands","Switzerland","CH","NL",1773850448579]