but anyhow..... here is one, one I just wrote today actually. This is what I would call an oldie but a goodie.
Function Invoke-Speech { <# .SYNOPSIS This functions allows you to make a computer speak. .DESCRIPTION This function allows you to make Windows talk with the voice of either Microsoft David or Microsoft Zira. .EXAMPLE PS C:\> Invoke-Speech -Gender Female -Message "You Sir, look like you are ready for a coffee break." .NOTES Version : 5.0+ Verified Author/Copyright : © Matthew Kerfoot - All Rights Reserved Email/Blog/Twitter : mkkerfoot@gmail.com www.TheOvernightAdmin.com @mkkerfoot Disclaimer : THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER. While these scripts are tested and working in my environment, it is recommended that you test these scripts in a test environment before using in your production environment Matthew Kerfoot further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of this script and documentation remains with you. In no event shall Matthew Kerfoot, its authors, or anyone else involved in the creation, production, or delivery of this script/tool be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business comerruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Matthew Kerfoot has been advised of the possibility of such damages Assumptions : ExecutionPolicy of AllSigned (recommended), RemoteSigned or Unrestricted (not recommended) #> [CmdletBinding(SupportsShouldProcess)] Param( [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$true, HelpMessage = "David or Zira?", Position=0)] $Gender, [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$true, HelpMessage = "What would you like to say?", Position=1)] $Message ) $Voice = New-Object -ComObject sapi.spvoice Switch($Gender) { Male { $Voice.Voice = $Voice.GetVoices().Item("0") ; $Voice.Speak($Message) } Female { $Voice.Voice = $Voice.GetVoices().Item("1") ; $Voice.Speak($Message) } Default { $Voice.Speak($Message) } <# Microsofts default is Male. #> } } Invoke-Speech -Gender Female -Message "You Sir, look like you are ready for a coffee break."