How to make WP page accessile only to specific user roles

Don’t know if there is plugin for this or not, you should try by searching “restrict page by user roles” in WordPress directory.
But if you can code and know few conditional tags and how to use them then I think you should try following snippet and it will work for you.

But Beware, this will redirect to home for all the other page you not entered in $allowed_pages array. So just add more if conditions as per your requirements.

add_action( 'template_redirect', 'neo_restrict_pages_as_per_user_roles' );
function neo_restrict_pages_as_per_user_roles(){
    if( is_user_logged_in() && !current_user_can('administrator') && (!is_home() || !is_front_page() ) ){
        $user_meta = wp_get_current_user();
        $user_roles=$user_meta->roles;

        $allowed_pages = array(
                                'subscriber' => array('2'),
                                'author' => array('16','18')
                            );

        if( array_key_exists($user_roles[0], $allowed_pages) ){
            $allowed_pages_ids = $allowed_pages[$user_roles[0]];
            if( !in_array( get_the_ID(), $allowed_pages_ids ) ){
                wp_redirect( home_url(), 302 );
            }
        }
    }
}

in above code you just have to add page ids in following array along with their roles

$allowed_pages = array(
    'subscriber' => array('2'),
    'author' => array('16','18')
    // user roles => array('page id 1', 'page id 2', ...)                       
);

put this in you functions.php file in theme, but before doing that don’t forgot to take backup of that file. so that if not work as per your requirement you can revert it back.