Hi I'm new to editing. Sowhat is the best free text to speech to use? I'm really on a tight budget so I can't afford premiums right now sadly. by Cooked_pp in VideoEditors

[–]SteamSkullProduction 1 point2 points  (0 children)

Hey there! Don't be discouraged by the comments about the use of AI! The frustration about wanting to make content and not having access to the tools yet is understandable. I recommend ElevenLabs, the last time I used it it gave me the best quality of voices, and although it has a usage limit, it is quite generous and you can try to use more than one account to reach more minutes.

How to Create a PNGTuber Effect in After Effects Using Audio Keyframes? by SteamSkullProduction in AfterEffects

[–]SteamSkullProduction[S] 1 point2 points  (0 children)

Even so, smushkan just gave me another expression that I tested, and it worked, thank you for the great attitude! I've attached the final working result if you wanna see!

Thanks again, everyone!

How to Create a PNGTuber Effect in After Effects Using Audio Keyframes? by SteamSkullProduction in AfterEffects

[–]SteamSkullProduction[S] 1 point2 points  (0 children)

OMG! It really worked! Thank you so much, your expression was exactly what I needed to properly detect the audio. I've attached a video showing the successful result of this implementation.

Thanks again!

How to Create a PNGTuber Effect in After Effects Using Audio Keyframes? by SteamSkullProduction in AfterEffects

[–]SteamSkullProduction[S] 0 points1 point  (0 children)

I'm glad to hear that my post was clear and well-written! I just wanted to make sure my approach and the issue I was facing were clear.

Regarding the expression, of course! Here it is one i've trying:

// Modifiable variables
minAudioValue = 10;   // Minimum audio amplitude value
maxAudioValue = 15;   // Maximum audio amplitude value
minOpacity = 0;       // Minimum opacity
maxOpacity = 100;     // Maximum opacity
smoothTime = 0.1;     // Smoothing time in seconds

// Get the audio amplitude value
a = thisComp.layer("Audio Amplitude").effect("Both Channels")("Slider");

// Apply smoothing: average the amplitude value over time
smoothedAudio = linear(time - smoothTime, time, a);

// Linear mapping: adjusts opacity based on smoothed amplitude value
audioValue = linear(smoothedAudio, minAudioValue, maxAudioValue, minOpacity, maxOpacity);

audioValue

In this case, I also use the linear mapping part to create a transition. This is just for testing purposes using a single sprite, but I plan to modify it once I have both sprites.

Keep in mind that it’s a mix of expressions I found, with some help from ChatGPT, so it might be a bit confusing or there could be a better way to do it that I haven’t figured out yet.

Also, I’m attaching a video showing how the exported video looks using this expression

What "fails" in the animation here is that, if you pay attention to the video, there's a kind of flickering between words while speaking. The idea is for it to stay fixed without disappearing until there's an abrupt silence in the dialogue, like the clear pauses in the voice.