I know this is an old thread but thought I'd share my experience and unique solution in case anyone is considering using the ISD17xx.
After battling with the SPI for more time than I care to admit, I had an important realization.
SPI operation seems at best intermittent. Some commands work all of the time (DEVID), some work some of the time (RD_PTR). The device seems to work fine in manual mode, with the switches.
Since the switch inputs are just looking for logic levels, I thought about driving them directly with the Arduino. There already was a common ground. I rewired my board, putting in 10k resistors in series for a bit of isolation/protection and ran digital lines to the switch inputs. I chose 10k since the inputs have 600k pullups, and 10k should have negligible effect on a logic low. I have not tried it but am confident that no resistors are required.
The system now works perfectly!
No bit bashing or SPI library/SPI configuration/time delays/flag checking required. I wrote simple functions that sends logic low for 100 ms to appropriate switch inputs to activate each desired function.
The only functionality lost with this approach is that my message handling structure needs to know how many messages are recorded in the circular memory array after power is applied. I plan on using a dedicated location in FLASH to store this value.
Asserting the RESET line gets you to a known condition (PLAY & REC PTRS at last message) so you can then use FWD to advance through the circular array.
I've also found that many boards are available with this chip on it at very affordable prices so it is a good option for adding voice output to any system.
Save yourself a lot of frustration by ignoring the SPI interface and just wire into the switch inputs. The internal pullups and debouncing make it virtually foolproof.