Singing Me (fixed)
Key RequiredUniversal

Singing Me (fixed)

Universal ScriptNotJohnDoeExploitsNotJohnDoeExploits 7K views 189 executesUpdated Sep 19, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•145 lines (3580 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")

local plr = Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()

local head = char:WaitForChild("Head")
local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
local neck = torso:WaitForChild("Neck")

local face = head:FindFirstChild("face")
if face then face:Destroy() end

local sound = Instance.new("Sound")
sound.Parent = head
sound.Volume = 1
sound.Looped = true

local gui = Instance.new("ScreenGui")
gui.Name = "AudioUI"
gui.ResetOnSpawn = false
gui.Parent = plr:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 200, 0, 60)
frame.Position = UDim2.new(0.5, -100, 0.5, -30)
frame.BackgroundColor3 = Color3.fromRGB(120,120,120)
frame.BorderSizePixel = 0
frame.Parent = gui

local dragBar = Instance.new("TextLabel")
dragBar.Size = UDim2.new(1, 0, 0, 20)
dragBar.BackgroundColor3 = Color3.fromRGB(90,90,90)
dragBar.Text = "Drag Me"
dragBar.TextSize = 14
dragBar.TextColor3 = Color3.new(1,1,1)
dragBar.Parent = frame
dragBar.Active = true

local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -10, 0, 30)
box.Position = UDim2.new(0, 5, 0, 25)
box.BackgroundColor3 = Color3.fromRGB(200,200,200)
box.Text = "Enter Audio ID"
box.ClearTextOnFocus = true
box.Parent = frame

box.FocusLost:Connect(function(enterPressed)
	if enterPressed then
		local id = box.Text:gsub("%D", "")
		if id ~= "" then
			sound:Stop()
			sound.SoundId = "rbxassetid://" .. id
			sound:Play()
		end
	end
end)

local dragging = false
local dragStart
local startPos

dragBar.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 
	or input.UserInputType == Enum.UserInputType.Touch then
		
		dragging = true
		dragStart = input.Position
		startPos = frame.Position

		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then
				dragging = false
			end
		end)
	end
end)

UIS.InputChanged:Connect(function(input)
	if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement 
	or input.UserInputType == Enum.UserInputType.Touch) then
		
		local delta = input.Position - dragStart
		frame.Position = UDim2.new(
			startPos.X.Scale,
			startPos.X.Offset + delta.X,
			startPos.Y.Scale,
			startPos.Y.Offset + delta.Y
		)
	end
end)

local function createPart(size, position)
	local part = Instance.new("Part")
	part.Size = Vector3.new(1,1,1)
	part.Anchored = false
	part.CanCollide = false
	part.BrickColor = BrickColor.new("Black")
	part.Parent = head

	local mesh = Instance.new("SpecialMesh")
	mesh.MeshType = Enum.MeshType.Sphere
	mesh.Scale = size
	mesh.Parent = part

	local weld = Instance.new("Weld")
	weld.Part0 = part
	weld.Part1 = head
	weld.C1 = position
	weld.Parent = part

	return mesh
end

local eye1m = createPart(Vector3.new(0.02,0.12,0.03), CFrame.new(-.17,.14,-.57))
local eye2m = createPart(Vector3.new(0.02,0.12,0.03), CFrame.new(.17,.14,-.57))
local mouthm = createPart(Vector3.new(.13,0.1,0.05), CFrame.new(0,-.25,-.6))

local ogsize = mouthm.Scale

RunService.RenderStepped:Connect(function()
	if sound.IsPlaying then
		local loudness = sound.PlaybackLoudness

		mouthm.Scale = mouthm.Scale:Lerp(
			Vector3.new(
				ogsize.X + loudness/20000,
				loudness/1000,
				ogsize.Z
			),
			0.8
		)

		neck.C0 = neck.C0:Lerp(
			CFrame.new(0,1,0) *
			CFrame.Angles(
				math.rad(mouthm.Scale.Y * 100) - math.rad(90),
				0,
				math.rad(180)
			),
			0.1
		)
	end
end)

Features & Information

It's fixed! Put a sound ID in the audio box, then it'll play it and sync it's mouth with it. Example: 99298451577207 The script will sync the mouth with the sound that is currently playing.

Community Comments (8)

ALTERRATICALTERRATICSep 19, 2025

Is it FE?

Replying to @ALTERRATIC
NotJohnDoeExploitsNotJohnDoeExploitsApr 14, 2026

@ALTERRATIC it's not fe and it won't work for some executors so I fixed it

xyrevexxyrevexSep 19, 2025

omg an original script??

Replying to @xyrevex
NotJohnDoeExploitsNotJohnDoeExploitsApr 14, 2026

@xyrevex I didn't make the original

NoobsNoobsSep 19, 2025(edited)

How you got the open source code?

Replying to @Noobs
NotJohnDoeExploitsNotJohnDoeExploitsApr 14, 2026

@Noobs darks website

MoonyMoonyMar 30, 2026

insane

Replying to @Moony
NotJohnDoeExploitsNotJohnDoeExploitsApr 14, 2026

@Moony I fixed the script

More Scripts for Universal Scripts