January 29, 20251 yr I've started scaffolding and implementing a new MSFS add-on I'm calling OpenPax. Passenger & crew add-ons for MSFS have been popular for many years, but since my programming roots (and really, what got my AAA game dev job) are open-source programming, and during my college years almost exclusively open-source game modding, I wanted to attempt and tackle a project like that, hopefully with a team of passionate collaborators, in a fully open way. I have a few very small open-source add-ons for MSFS already on flightsim.to (see here), but this is definitely a lot more ambitious than that. Although any add-on like this requires significant work, and I fully understand why existing add-ons have been closed source payware (devs deserve to be paid!), this is going to be a hobby project that I'm not leaning on for income. This comes with positives (open-source, freeware) and negatives (any income-driven motivation beyond donations won't be there). At the moment I am not looking for feature requests or suggestions, as I want to get all the main components done first before people get their hopes up. Again, the project is in very early development, with no guarantees. I understand that I'm potentially going to get a ton of feature requests anyway, and that's fine, as long as you understand that the project is not yet at a point where it can consider them. What I am looking for, however, is collaborators. Folks with multiple years of experience in programming (C#, WPF; especially when it comes to UI, OOP business logic, and SimConnect), game design, and / or UI art, that want to contribute to the project on a consistent, albeit hobbyistic, basis. Although like any open-source project it'll be open to Pull Requests from anyone and everyone, I'm hoping to have a core team that wants to consistently collaborate on the project. If interested, please private message me here with a link to your LinkedIn / resume / portfolio. If and when I give up on the project, the code and assets will all be up on GitHub for the rest of the collaborators to continue working on it, and / or other folks to fork and make their own versions of it. Some core stuff planned with high-level design completed (not saying much, but more than nothing!): An airframe editor that allows users to create, edit, and share their own airframes very easily, both as a JSON document, as well as just a textual (think ASCII-art lite) visualization of a seat map. (The proof of concept for this is done, and it's pretty cool to be able to import a seat map based on just some ASCII art that follows certain rules and constraints.) A shareable airframe object library (galley, seats, bathroom, storage, etc.) Automatic aisle and service boundary detection, with optional user-defined configurations if the automatic detection falls short Passengers with individual needs (hunger, thirst, bladder, comfort, entertainment, anxiety, fatigue, health), personalities, and behaviors. Pathfinding including obstacle detection (e.g. passenger can't access the bathroom or go back to their seat because a flight attendant pushing a service cart is in the aisle) Initial passenger need status influenced by departure and arrival airport (e.g. size of airport and inferred concession options, departure and arrival time and whether concessions are open, boarding / flight delays) Passenger status incremental updates affected by passenger personality and interconnected needs Ticket sales influenced by departure and arrival airport size, time of day (e.g. cheaper overnight flights), user-defined destination popularity by month (e.g. beach destinations being more popular and expensive in the Summer, and so on) Ticket and cargo sales taking into account MZFW / MTOW Simbrief import & dispatch Sim Rate compatibility Optional "Fog of war" with regards to passenger needs (the crew and user will only be aware of the state of passenger needs as crew interact with said passenger; e.g. you can't magically know John Smith at 4D is really hungry unless a crew member has interacted with them recently through a crew-initiated service (meal, beverage, and so on) or a passenger-initiated "call attendant" interaction. Optional GSX integration re: passenger boarding / deboarding Using SimConnect to interact with MSFS, but also with an internal basic flight emulation to help with app development and debugging, as well as airframe and airport development by the community, so that you don't need to do a whole flight in MSFS just to test a seat map you've created Airframe configuration re: seat comfort per class, IFE options, Wi-Fi options SAPI dynamic announcements, with user-customizable text per announcement Optional ElevenLabs integration for more natural TTS with user-provided API key Core stuff planned with no high-level design yet: Scoring Some blue sky stuff for down the road: Company management (airframe purchasing, crew management, vendor contracts, hubs and routes) Visual drag-and-drop airframe editor (note that text-based airframe editing is already planned to be part of the initial release) Edited January 29, 20251 yr by Leftos
January 29, 20251 yr I'd love to help, count me in! For transparency: I'm a community mentor at the BATC discord. However, I do not get paid for it in any way.
January 29, 20251 yr Me too. Have sent you a PM 9800X3d, 4090, 64 GB DDR5 6000 RAM, 4 TB NVME (2x2), 4K Ultra + Framegen
January 29, 20251 yr sounds like a cool project. also I like how you are willing to let users create their own seat map configuration. Its why I stopped using Passenger2. In my opinion Everyone should be allowed to create their own unique seat map.
February 6, 20251 yr I have re-opened this thread after discovering that the user (TomTom558) that was harrassing the OP has been posting from the same IP address as a developer of a similar product. We do not tolerate sock-puppet subterfuge and intrigue on the forums. Bob Scott | President and CEO, AVSIM Inc ATP Gulfstream II-III-IV-V Sys1 (MSFS20+24/XPlane12+11): AMD 9800X3D, water 2x240mm, MSI MPG X670E Carbon, 64GB GSkill 6000/30, nVidia RTX4090FE Alienware AW3821DW 38" 21:9 GSync, 2x4TB Crucial T705 PCIe5 + 2x2TB Samsung 990 SSD, EVGA 1000P2 PSU, 12.9" iPad Pro Thrustmaster TCA Boeing Yoke, TCA Airbus Sidestick, Twin TCA Airbus Throttle quads, PFC Cirrus Pedals, Coolermaster HAF932 case Sys2 (P3Dv5/v4): i9-13900KS, water 2x360mm, ASUS Z790 Hero, 32GB GSkill 7800MHz CAS36, ASUS RTX4090 Samsung 55" JS8500 4K TV@60Hz, 3x 2TB WD SN850X 1x 4TB Crucial P3 M.2 NVME SSD, EVGA 1600T2 PSU Fiber link to Yamaha RX-V467 Home Theater Receiver, Polk/Klipsch 6" bookshelf speakers, Polk 12" subwoofer, 12.9" iPad Pro PFC yoke/throttle quad/pedals with custom Hall sensor retrofit, Thermaltake View 71 case, Stream Deck XL button box Sys3 (DCS/P3Dv4/ATS/ETS): AMD 7800X3D, MSI MPG X870E Carbon, Noctua NH-D15S, 64GB GSkill 6000/30, EVGA RTX3090 Alienware AW3420DW 34" 21:9 GSync, Corsair HX1000i PSU, 4TB Crucial T705 PCIe5 + 2TB Samsung 970Evo Plus, TM TCA Officer Pack, Saitek combat pedals, TM Warthog, TM RS300 FF wheel/pedals, Coolermaster HAF XB case
February 6, 20251 yr Author 2/6/2025 Status Update Dynamic Custom Airframes I am very happy with how the dynamic custom airframe feature is coming along. Nothing is hardcoded in the seat map, other than the objects themselves like seats, galley space, restrooms, and so on. The code dynamically figures out the pathfinding, prevents collisions between characters moving around the aircraft where appropriate, and finds the optimal positions for the crew for various stages of flight (welcoming and greeting off passengers during boarding and deboarding, safety briefing, etc.) Same with the distribution of service areas and responsibilities between the crew members. What this means is that you can staff a 300 seat aircraft with just 1 or 2 crew members (if for some reason you're feeling spicy), and the code will figure out where best to place them, and how they're going to navigate completing services. Passengers will pathfind to the nearest restroom, but perhaps change their mind halfway if they notice that it's occupied and/or there's a queue, looking for another nearby restroom that might be less busy or immediately available. You can place the restrooms wherever you want, you can define which ones are accessible for which class, and so on. Doors are dynamic too, in that the most appropriate door for passengers of a given class to board the aircraft on are determined on the fly. What this all means is that all you have to do is ASCII art yourself a seat map based on the rules of the object library you're using, or describe it in JSON, and OpenPax takes care of everything else itself. You don't have to worry about setting up crew placements, paths, any of that. It all happens for you. The plan, of course, is allowing users to override some of these things, in case the dynamic determination doesn't produce the results they wanted. So, in other words, as an example, you don't have to put down crew safety briefing positions, but you'll be able to if you want to. For now it's all dynamic, but that's coming. It's just a lot of fun throwing different seat maps at it, even ones with weird polygonal seat areas, and having it all work. It was a lot of work, but I'm super happy with it, and I can't wait to get to a public alpha so you can throw all the seat maps you want at it and break it, so we can make it better together. (Remember that this is a community-driven open-source project!) Same thing with the amount of crew members. Same seat map can be used with 1 crew member, 2, 3, 8, whatever you want. Of course each seat map will have a recommended number of crew members, so you can abide by it if you want realism, but you'll have the flexibility to do as you wish. Of course you can also not staff a flight at all, if you want to for some reason, OpenPax adjusts to that. OpenPax will NOT require a flight simulator The other exciting news is that as part of being able to develop, iterate, and debug much quicker, I wrote a pretty simple but effective flight stages emulator. Meaning that I gathered all the variables I want to read from, say, MSFS over SimConnect (Z axis velocity, ground speed, lights state, seatbelt sign state, and so on), and wrote code that can affect all those variables frame-by-frame, emulating all the stages of flight from pre-boarding to post-deboarding, including pushback, taxi, climb, cruise, descent, landing, and so on. Although this was done mostly so that I don't have to do a full flight in MSFS just so I can test all the OpenPax features, what this means is that folks that want the Lead Flight Attendant experience without having to also know how to fly an airliner / business jet in MSFS, will be able to. So, OpenPax will work with MSFS when the first public alpha is released, as a companion experience to that of you flying the aircraft, but will also be able to be used as a standalone game! Looking for ideas: Personality Traits, Passenger Groups A big thing about OpenPax is that every passenger and crew member will be unique. They won't just have needs, they'll have what I'm calling "personality traits". Things like "empathetic", "impatient", "anxious", "scared of flying", "talkative", "authoritative", and so on. Those traits will impact every single interaction between two people on the aircraft, between passengers and crew alike. An empathetic passenger might be able to calm down their nearby passengers during turbulence or an emergency. A talkative passenger might entertain or annoy their fellow passengers. A "parent" crew member might be able to deal with a crying baby even if its parents are fast asleep, before it wakes up and annoys a bunch of other passengers. And so on. A friend described it as "Sims but in the sky", and I really liked that analogy. Also, passengers will travel sometimes individually, sometimes in groups. Expect to see families travel together, perhaps separated and asking one of your flight attendants to be sat together, and the passenger that has to change seats with them reacting according to their own personality. Sports teams might travel together, being a bit more rowdy than your average passenger, depending on their Coach flying with them. And so on. So, I would love to hear your ideas on different personality traits and passenger groups you'd like to see! Experience catered to how you want to play By this point you might be getting worried about OpenPax being too much of a micromanaging experience, but fret not. Every aspect of gameplay will have automation options, and automation profiles will be shareable to provide different gameplay experiences. You want to play as a Captain, having all of the crew-and-passenger interactions automated, simply being scored on how well you did on your flight, as well as how you handled emergent situations? Cool! You want to play as a Lead Flight Attendant, coordinating your crewmates to make sure services happen on time, and that individual passenger needs, where reasonable, are catered to? Awesome. Both of those experiences, and every experience in between will ship in the first public alpha, as you'll have full control about what you want to handle yourself vs be automated. Game engine news The current choice of game engine is Godot. I wanted to go with Unity, but I had written too much of the backend / business logic code already using C# 9+ features, where Unity still only supports up to C# 8. If Unity ever supports newer C# versions, I'll likely migrate the project over, but for now, Godot has been serving the project's needs fine. Edited February 6, 20251 yr by Leftos
February 6, 20251 yr Author Here's some example seat maps done in ASCII art. That's literally all you have to do to add your own custom airframe / seat map to OpenPax. ------- | GGG | D D |EE E| |EEE E| | | |E E| |E E| |SRRSS| ------- ---------- | GGGGGG | D D | RR| |BB BB BB| |BB BB BB| D D | SS | |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| | | |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |EE EE EE| |R GG R| ---------- Here's the current, very, very work-in-progress object library that you can use to build seat maps with. { "Objects": { "EconomySeat": { "Type": "Seat", "Name": "Economy Seat", "Width": 1, "Height": 1, "RequiresAccessibility": true, "VisualizationSymbol": "E", "SeatClass": "Economy" }, "PremiumEconomySeat": { "Type": "Seat", "Name": "Premium Economy Seat", "Width": 1, "Height": 2, "RequiresAccessibility": true, "VisualizationSymbol": "P", "SeatClass": "Premium Economy" }, "BusinessSeat": { "Type": "Seat", "Name": "Business Seat", "Width": 2, "Height": 2, "RequiresAccessibility": true, "VisualizationSymbol": "B", "SeatClass": "Business", "SeatingPositions": [ { "X": 0, "Y": 1 }, { "X": 1, "Y": 1 } ] }, "FirstClassSeat": { "Type": "Seat", "Name": "First Class Seat", "Width": 2, "Height": 3, "RequiresAccessibility": true, "VisualizationSymbol": "F", "SeatClass": "First" }, "Galley": { "Type": "Galley", "Name": "Galley", "Width": -1, "Height": 1, "RequiresAccessibility": true, "VisualizationSymbol": "G" }, "RestroomEconomy": { "Type": "Restroom", "Name": "Restroom", "Width": 1, "Height": 1, "RequiresAccessibility": true, "VisualizationSymbol": "R", "SeatClass": "Economy" }, "RestroomBusiness": { "Type": "Restroom", "Name": "Restroom (Business Class)", "Width": 2, "Height": 1, "RequiresAccessibility": true, "VisualizationSymbol": "R", "SeatClass": "Business" }, "RestroomFirst": { "Type": "Restroom", "Name": "Restroom (First Class)", "Width": 2, "Height": 2, "RequiresAccessibility": true, "VisualizationSymbol": "R", "SeatClass": "First" }, "Storage": { "Type": "Storage", "Name": "Storage", "Width": 1, "Height": 1, "RequiresAccessibility": false, "VisualizationSymbol": "S" } } } Oh, and did I mention that even the services offered are going to be configurable? { "Services": { "Beverage Service": { "RegularInterval": "02:00:00", "FirstServiceTiming": { "RequiresPreviousService": false, "AfterFlightStage": "Climb", "DelayAfterTrigger": "00:10:00" } }, "Standard Meal": { "RegularInterval": "06:00:00", "FirstServiceTiming": { "RequiresPreviousService": true, "PreviousService": "Beverage Service", "DelayAfterTrigger": "00:30:00" } }, "Trash Collection": { "RegularInterval": "06:00:00", "FirstServiceTiming": { "RequiresPreviousService": true, "PreviousService": "Standard Meal", "DelayAfterTrigger": "00:30:00" } } } }
February 6, 20251 yr Author Just now, Aglos77 said: Have you thought about supporting other simulators such as xplane ? Yeah, definitely. As long as I (or anyone in the flight sim community, really) can figure out how to get the variables OpenPax needs out of it, it should be able to support any and all flight sims that expose those variables! I've only been talking about MSFS just because that happens to be the simulator I use to fly, and I'm familiar with SimConnect already. But it being an open-source project, someone could easily write an XPlane adapter, a P3D adapter, and so on.
February 6, 20251 yr Author One more status update I forgot. Sim Rate support All of the logic in OpenPax can be executed at various sim rates, as well as be paused. In my development I've been using anything between 5x and 20x, and everything happens according to that. Movement, services, flight stage emulation, and so on. So if you're using OpenPax with MSFS, everything in OpenPax will pause when you pause, and will go faster when you're using sim rate > 1x (or slow down if for some reason you're using sim rate < 1x). If you're using OpenPax as standalone, you'll be able to speed up / slow down / pause at any time, so you can get through any boring stages quicker, and get to whatever stage is most fun to you!
February 6, 20251 yr Author I also want to note that I really want OpenPax to have a sense of continuity between flights, not just be something you can only use for an individual flight in a vacuum. A sense of progression. For one, a high-level idea I want to see is to have a sense of schedule, so that, say, a crew member that's exhausted or really stressed out from a previous flight that then is put on another flight without an opportunity to rest, will carry some lingering effects with them, that will affect their performance and their interactions with their crewmates and passengers.
February 8, 20251 yr Author Status Update 2/7/2025 Boarding Strategies All 5 of the below boarding strategies have been implemented, with pathfinding that takes into account collisions. Passengers might take a bit to stow their luggage, and other passengers waiting to go past them will (patiently or not...) wait behind them. Right now you have to pick one before every flight, but once some sense of progression between flights is implemented, you should be able to just set it for your "company". - Random within class - Front to back rows, random within each row - Back to front rows, random within each row - Front to back rows, outside-in (window, middle, then aisle) - Back to front rows, outside-in (window, middle, then aisle) Are there more strategies I'm missing that you'd like to see implemented? Let me know! Individual Personalities 30 different personality traits were added today. These traits, along with other factors such as age, time of day, and so on impact a passenger's / crew member's initial needs, their needs update rate, as well as impact all their interactions with fellow passengers and crew. As needs change either through time progression, interactions, in-flight services, sleeping, going to the bathroom, and so on, little thought phrases are created, each with an importance factor and a natural fall-off timer, that you can take a peek at (if you want) per passenger, to get a sense for how each passenger is feeling, and what their recent interactions have been. Optional thought bubbles and speech bubbles point out when a passenger has a new thought you could check out, or when they're interacting with other passengers. Whole cabin overviews re: needs and thoughts are planned and are in the design stage. Every passenger is going to be unique, and every flight also unique as a result. You'll be able to use the best of your crew to calm anxious passengers down, offer them an out-of-band beverage, and so on. Special events (still in the design phase) will require you to decide if and how to handle them, but there might be tough decisions to make, where prioritizing one situation might negatively impact another. Picking the right staff will have a big impact in passenger satisfaction. Overwork your best staff, however, and all the traits in the world won't be enough for them to handle everything as well as they (and you) would want to. Fog of war is still very much planned as an optional difficulty setting, where passenger needs and personality traits are hidden until your crew interact with them. Certain crew will be more personable, or their personality traits might vibe better with the passenger's, and in the process they'll uncover more about the passenger's current needs and traits, which will inform future interactions, or out-of-band services. Passengers themselves will also be able to request out-of-band services using the "Call Flight Attendant" button; well, at least not the most introverted of them will be! // Shared traits that both passengers and crew can have private static readonly PersonalityTraitType[] SharedTraits = [ PersonalityTraitType.ParentalInstinct, PersonalityTraitType.Friendly, PersonalityTraitType.Unfriendly, PersonalityTraitType.Extroverted, PersonalityTraitType.Introverted, PersonalityTraitType.Anxious, PersonalityTraitType.Calm, PersonalityTraitType.Impatient, PersonalityTraitType.Professional, PersonalityTraitType.Adaptable, PersonalityTraitType.ShortTempered, PersonalityTraitType.Helpful, PersonalityTraitType.Talkative, PersonalityTraitType.Empathetic ]; // Passenger-specific traits private static readonly PersonalityTraitType[] PassengerTraits = [ PersonalityTraitType.AfraidOfFlying, PersonalityTraitType.Germaphobic, PersonalityTraitType.Claustrophobic, PersonalityTraitType.MotionSensitive, PersonalityTraitType.TechDependent, PersonalityTraitType.FrequentFlyer, PersonalityTraitType.FirstTimeFlyer, PersonalityTraitType.SleepProne, PersonalityTraitType.DietaryRestricted ]; // Crew-specific traits private static readonly PersonalityTraitType[] CrewTraits = [ PersonalityTraitType.DetailOriented, PersonalityTraitType.MultiTasker, PersonalityTraitType.Leadership, PersonalityTraitType.ServiceOriented, PersonalityTraitType.Experienced, PersonalityTraitType.Strict, PersonalityTraitType.Lenient ]; Example of a trait's self-contained characteristics: _traits[PersonalityTraitType.Friendly] = new( PersonalityTraitType.Friendly, "Friendly", "Initiates positive interactions, boosts others' mood", new Dictionary<NeedType, double> { { NeedType.Anxiety, -10 }, { NeedType.Entertainment, 20 } }, new Dictionary<NeedType, double> { { NeedType.Entertainment, 0.8 }, // Entertainment decreases slower { NeedType.Fatigue, 1.2 } // Fatigue increases faster }, null, new List<(string, double, TimeSpan)> { ("A smile goes a long way", 0.6, TimeSpan.FromMinutes(4)), ("Everyone seems in good spirits", 0.7, TimeSpan.FromMinutes(5)), ("Nice to meet new people on flights", 0.8, TimeSpan.FromMinutes(3)) } ); Example of how two traits interact when the people that have them interact: // Empathetic + Anxious { (PersonalityTraitType.Empathetic, PersonalityTraitType.Anxious), ( // Effects on Empathetic person [ new NeedModification(NeedType.Fatigue, 20), new NeedModification(NeedType.Anxiety, 10) ], // Effects on Anxious person [ new NeedModification(NeedType.Anxiety, -20), new NeedModification(NeedType.Comfort, 20), new NeedModification(NeedType.Health, 10) ], // Thoughts for Empathetic person [ new InteractionThought("I can sense their anxiety", 0.8, TimeSpan.FromMinutes(4)), new InteractionThought("They need some calming support", 0.7, TimeSpan.FromMinutes(3)) ], // Thoughts for Anxious person [ new InteractionThought("They seem to understand how I feel", 0.7, TimeSpan.FromMinutes(4)), new InteractionThought("Their support helps", 0.6, TimeSpan.FromMinutes(3)) ] ) },
February 10, 20251 yr Author 2/10/2025 Development Update Announcements & Text To Speech (70% implemented) This weekend development was all about announcements and text-to-speech tech. Announcements will be dynamic, mentioning airline, flight number, origin and destination cities, local time, cruise altitude, etc. And the only way to do that is by leveraging TTS tech, which thankfully is at a very good spot these days. Oh, and of course announcements already are user-customizable, including being able to add your own parametrizable (dynamic) announcement lines / scripts, by following some simple rules about the patterns you should be using to allow for dynamism. So, speaking of text-to-speech tech, let's talk options OpenPax will ship with: Windows Speech API / SAPI: The TTS engine that's built into your WIndows PC, including natural voices using something like the NaturalVoiceSAPIAdapter. Kokoro 82M: An open-weights TTS model that can produce high quality speech running completely locally (at the cost of CPU and RAM usage, as well as storage, so probably will only be used by those with beefier PCs, and/or those using OpenPax as a standalone game, rather as a flight sim add-on). Running this model locally bloats OpenPax's memory usage to 3GB (from 500MB in the debugging development build), and it takes up about 1.5GB of storage space, so keep that in mind! ElevenLabs: One of the leading payware TTS tech providers; you'll be able to provide your ElevenLabs API key and use their tech in a pay-as-you-go! None: No spoken announcements And because accessibility matters, announcements will optionally show up as "subtitles" in a box at the bottom of the game's screen. You can click through it and it fades away so you can access any features / game elements that might be hiding behind it. But, as always, if you prefer not to have subtitles, just don't turn on that setting. Customizability and being able to cater your experience to how YOU want to play is the name of the game with OpenPax. Sleeping Passengers (80% implemented) A cute little detail I'm happy with is a small animation of light blue zZ above the heads of passengers that are sleeping. Red-eye flights will see crew avoid making announcements that aren't critical, diming the lights, and just generally doing what they can to help passengers sleep. Better send someone to distract that crying baby before it grumpily wakes up everyone around them! Passenger Inventory (design stage) Personality traits will play a part on how well-prepared each passenger is. Did they bring a sleep mask, or will they wake up the moment the lights turn on? Earplugs to keep away that crying baby's noises we were talking about? A neck pillow so they don't wake up really uncomfortable and sore? Fun little details like that will make every passenger, and thus every flight, unique. Looking Ahead I am super excited to continue working on OpenPax, and I really need to stop adding things to the feature list, so that I can get to a public alpha test soon(tm). I've been hitting up friends to find people talented in pixel art, and I'm looking forward at commissioning spritesheets and other art from talented folks out there. I've been using placeholder assets for now, and I'm getting tired of having the one sprite for every single passenger, but one thing at a time! I need to flesh out the functionality first, then I'll have a much better idea of what all art I need in order for a public alpha to be released. Once OpenPax is at a public alpha stage, the OpenPax GitHub repo will be made public, so that folks can submit bug reports, pull requests, mods, etc. Until then, folks that have reached out to collaborate on this project as a team have been invited to the repo and can get an early feel for how everything's coming together. Just don't want to open the floodgates before things are at a minimum viable product, to avoid distractions and to stay focused on getting this project past the finish line. That's all for now! Hope you have a beautiful week ahead, and I'll see you on the next development update! Edited February 10, 20251 yr by Leftos
February 10, 20251 yr Author Oh, speaking of, if anyone wants to try out the Kokoro 82M TTS model locally, my Python/C# wrapper with an embedded version of Python 3.12.9 is up on GitHub as well (and this one is public already)! leftos/PythonTTS: C# wrapper for TTS through Python libraries
Create an account or sign in to comment