from looking at https://developer.wordpress.org/reference/functions/wp_get_post_terms/
and https://developer.wordpress.org/reference/classes/wp_term_query/__construct/ for corresponding parameters, i.e. the ‘exclude’ parameter
and
https://developer.wordpress.org/reference/functions/get_category_by_slug/ to get the category ids from their slugs.
it might work when you replace this line in your code:
// Get the taxonomy terms of the current page for the specified taxonomy.
$terms = wp_get_post_terms( get_the_ID(), ‘category’, array( ‘fields’ => ‘ids’ ) );
with this example code:
// Get the catogory ids of the two categories to be excluded
$cat1 = get_category_by_slug( 'song' );
$cat2 = get_category_by_slug( 'jpop' );
// Get the taxonomy terms of the current page for the specified taxonomy and exclude two categories
$terms = wp_get_post_terms( get_the_ID(), ‘category’, array( 'exclude' => array( $cat1->term_id, $cat2->term_id ), ‘fields’ => ‘ids’ ) );