A manual solution would involce snapping the vertices of the gps track to the closest point of the OSM paths. If there is a considerable disntance between vertices, consider first densifying the gps track (Menu Processing > Toolbox > Densify by interval).
Then use this expression with either Geometry generator (for visualisation only) or Geometry by expression (to generate actual geometries) - see here for details about both options:
make_line (
array_foreach (
generate_series (1, num_points( $geometry)),
closest_point (
aggregate ('OSM', 'collect', $geometry), -- replace OSM with the name of your layer containing the OSM paths
point_n( $geometry, @element)
)
)
)
Both solutions might run into problems where two OSM paths are very near and where the gps track crosses both. In such cases, you should repair manually or use QGIS network tools to test if the resulting path can be followed inside the network of the OSM paths.
The solution using Geomtry generator: blue line is the version of the red line snapped to the black paths. Be aware of one of the problematic spots (red dot):

Zoomed in to the problematic spot. This is difficult to avoid an should be checked using network tools.
