Does anyone know how to prevent the player from clipping through walls when the speed is set above 5?

So I have created a somewhat simple character controller. It moves based on the camera, and rotates in the direction of the input, but for some reason if the speed value is set above 5, the player has the ability to simply clip through walls. From what I can tell the main issue I think is causing this, is in line 43 of my code
this.transform.Translate(cameraRelativeMovement, Space.World);

The player has a Rigidbody so I am using .MovePosition for movement, but without the line of code above, the player on start will start where they are placed, but will immediately teleport to the world origin when given any input.

If anyone knows how I can fix this I would greatly appreciate it.

Here is my code in it’s entirety for context

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5f;
    public Transform cam;

    public float turnSmoothTime = 0.009f;
    float turnSmoothVelocity = 1f;
    Rigidbody RB;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        RB = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        //Get Player Input
        float playerVerticalInput = Input.GetAxis("Vertical");
        float playerHorizontalInput = Input.GetAxis("Horizontal");
        Vector3 direction = new Vector3(playerHorizontalInput, 0f, playerVerticalInput);

        //Get Camera-Normalized Directional Vectors, then remove the y-values of each vector and normalize them
        Vector3 forward = cam.transform.forward;
        Vector3 right = cam.transform.right;
        forward.y = 0;
        right.y = 0;
        forward = forward.normalized;
        right = right.normalized;

        //Create Direction-Relative Input Vectors
        Vector3 forwardRelativeVerticalInput = playerVerticalInput * forward * speed * Time.deltaTime;
        Vector3 rightRelativeHorizontalInput = playerHorizontalInput * right * speed * Time.deltaTime;

        //Create Camera-Relative Movement
        Vector3 cameraRelativeMovement = forwardRelativeVerticalInput +
            rightRelativeHorizontalInput;
        this.transform.Translate(cameraRelativeMovement, Space.World);

        if (direction.magnitude >= 0.1f)
        {
            float targetAngle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
            float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
            RB.MoveRotation(Quaternion.Euler(0f, angle, 0f));

            Vector3 moveDir = Quaternion.Euler(0f, targetAngle, 0f) * cameraRelativeMovement;
            RB.MovePosition(moveDir.normalized * speed * Time.deltaTime);
        }
    }
}