Technically you can't really make the user feel that the progress is going faster unless you can create an expectation first. Let's say you have an indeterminate process, and you show a spinning circle or hourglass, it doesn't really matter how fast you make the animation go because the user doesn't know what to expect anyway.
This is why sometimes text is displayed alongside the indeterminate process (e.g. Loading...) to set an expectation for the user. Another example is the Microsoft Office loading screen that shows the Add-ins details at the bottom left hand corner. For determinate processes, because there is already an expectation from the user (e.g. you are showing how many % is complete or how many documents need to be processed), the user can try to assess the speed of the progress bar relative to the amount of 'progress' remaining.
Here the trick is to try and match the progress bar animation with the progress so that it is as smooth as possible, or even try to exceed the user's expectation so that they feel it is faster. But if you make the progress bar move to 90% to raise then user's expectation then allow the last 10% to take 90% of the time, this is where you will get user frustration because their expectations are not met.
Rather than trying to solve the issues of designing based on perception, my advice is to design based on utility. That is, if the users have to wait, can you provide them with some useful information or let them do something productive during that time. This would provide a better overall user experience and give the users much more benefit.