Difference between revisions of "Multimedia Programming/zh CN"

From Lazarus wiki
Jump to navigationJump to search
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Multimedia Programming}}
 
{{Multimedia Programming}}
=播放视频=
 
  
==播放器应用程序==
+
== 播放视频 ==
  
一旦你知道了命令行参数,你可以使用TProcessUTF8启动播放器:
+
The [[Video Playback Libraries]] page contains an annotated list of libraries for Windows, as well as any operating system which is supported by FFmpeg or by VLC. These libraries can be used to embed video playback in your applications.
  
<syntaxhighlight>
+
== 播放音频 ==
uses
 
  Classes, ..., LCLProc, UTF8Process;
 
  
...
+
=== 本地解决方案 ===
 
 
implementation
 
  
procedure TMainForm.Button1Click(Sender: TObject);
+
==== macOS ====
var
 
  Player: TProcessUTF8;
 
begin
 
  Player:=TProcessUTF8.Create(nil);
 
  try
 
    Player.CommandLine:=PathToPlayer+' '+ParametersAndMediaFile;
 
    Player.Execute;
 
  finally
 
    Player.Free;
 
  end;
 
end;
 
</syntaxhighlight>
 
  
例如在Linux下启动的mplayer播放视频:
+
* [[macOS_Play_Alert_Sound|System Sound Services]] For up to 30 second sound clips, alerts etc.
 +
* [[macOS Audio Player|AVAudioPlayer]] For longer audio files with volume control, pause, stop, resume, loop control, background music etc.
 +
* [[macOS NSSound]] A very simple method for playing system sounds, application bundle sound files, other sound files with volume control, pause, stop, resume, loops etc.
 +
* [[#OpenAL_Library|OpenAL]] comes pre-installed on macOS (Deprecated at WWDC2019; to be removed in a  future macOS release).
  
<syntaxhighlight>
+
==== Windows ====
uses
 
  Classes, ..., FileUtil, LCLProc, UTF8Process;
 
  
...
+
===== Windows API =====
  
implementation
+
你可以使用Windows API来播放,例如wav文件:
  
procedure TMainForm.Button1Click(Sender: TObject);
+
<syntaxhighlight lang="pascal">
var
 
  Player: TProcessUTF8;
 
  Filename: String;
 
  PlayerPath: String;
 
  PlayerParams: String;
 
begin
 
  Filename:='/home/username/video.mpg';
 
  PlayerPath:=FindDefaultExecutablePath('mplayer');
 
  PlayerParams:='"'+Filename+'"';
 
  Player:=TProcessUTF8.Create(nil);
 
  try
 
    Player.CommandLine:=PlayerPath+' '+PlayerParams;
 
    Player.Execute;
 
  finally
 
    Player.Free;
 
  end;
 
end;
 
</syntaxhighlight>
 
 
 
==VFW - Windows视频==
 
 
 
在Windows捕捉和播放视频流从电视卡和网络摄像头 [[Glossary#VFW|VFW]] [[Glossary#API|API]] 可以用 [[SysRec]].([http://zh.wikipedia.org/wiki/Video_for_Windows 维基百科上的VFM])
 
 
 
==Linux gtk2/X上的MPlayer==
 
 
 
'''mplayer''' 是一个开源和免费的电影播放器。 There is a LCL control embedding the mplayer(<strike>LCL中可以内嵌入mplayer</strike>), 这样你就可以建立你自己的电影播放器​​或者只是播放视频在您的应用程序。你可以在这里下载:
 
<pre>
 
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/mplayer mplayer
 
</pre>
 
 
 
=播放音频=
 
 
 
==仅Windows:使用Windows API==
 
 
 
你可以使用Windows API播放文件(如wav):
 
<syntaxhighlight>
 
 
...
 
...
 
uses MMSystem;
 
uses MMSystem;
Line 80: Line 28:
 
sndPlaySound('C:\sounds\test.wav', snd_Async or snd_NoDefault);
 
sndPlaySound('C:\sounds\test.wav', snd_Async or snd_NoDefault);
 
</syntaxhighlight>
 
</syntaxhighlight>
自动防故障的方法,这将允许添加的路径和文件名是非拉丁字母:
+
 
<syntaxhighlight>
+
自动处理故障的方法,这将允许附加路径和非拉丁文字母的文件名:
 +
<syntaxhighlight lang="pascal">
 
...
 
...
 
uses LazUTF8;
 
uses LazUTF8;
 
...
 
...
sndPlaySound(pchar(UTF8ToWinCP('C:\sounds\test.wav')), snd_Async or snd_NoDefault);
+
sndPlaySound(pchar(UTF8ToSys('C:\sounds\测试.wav')), snd_Async or snd_NoDefault);
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
或者
 
或者
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
...
 
...
 
uses LazUTF8;
 
uses LazUTF8;
 
...
 
...
sndPlaySound(pchar(UTF8ToConsole('C:\sounds\test.wav')), snd_Async or snd_NoDefault);
+
sndPlaySound(pchar(UTF8ToConsole('C:\sounds\测试.wav')), snd_Async or snd_NoDefault);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
显然,这不是跨平台
+
===== Audiere库 =====
 +
 
 +
Has bindings for Delphi, but they do not work with FPC:
 +
 
 +
* http://code.google.com/p/audiere-bind-delphi/
 +
 
 +
===== Squall sound =====
 +
 
 +
Squall sound 与FPC一起工作地很好.它有3D音频和EAX效果,但是仅支持MP3,OGG和WAV格式. Open sourced in 在2009年开放源码,似乎已死亡.仅支持Windows.
 +
 
 +
https://github.com/xtreme3d/squall
  
==使用音频组件==
+
=== 跨平台 ===
  
查看这个页面页面 [[ACS|Audio Component Suite]]
+
==== ACS (Audio Component Suite) ====
  
==使用OpenAL库==
+
For more information, read the article about the [[ACS|Audio Component Suite]]
  
Delphi的教程可以在这里找到: [http://www.noeska.com/doal/tutorials.aspx]
+
==== Audorra Library ====
  
Free Pascal 访问OpenAL单元在 fpc/packages/openal 以及 [http://svn.freepascal.org/svn/fpc/trunk/packages/openal/examples 用法示例]
+
This library for Linux and Windows works well with Lazarus:  
  
==BASS==
+
http://sourceforge.net/projects/audorra/
  
BASS 库可以到这里下载 :http://www.un4seen.com/ 和 http://www.un4seen.com/forum/?topic=8682.0
+
==== BASS ====
  
有一个DJ应用程序,在 Windows, Linux 和 Mac OSX, written with Lazarus and using Bass lib(<strike>Lazarus中用Bass库</strike>):
+
Closed source. Free for non-commercial.
https://sites.google.com/site/fiensprototyping/
 
  
==Audiere库==
+
The BASS library can be downloaded from: http://www.un4seen.com/ and http://www.un4seen.com/forum/?topic=8682.0
  
已绑定Delphi,但他们不能工作在FPC:
+
There is a DJ application, for Windows, Linux and macOS, written with Lazarus and using Bass lib:
 +
https://sites.google.com/site/fiensprototyping/
  
* http://www.casteng.com/whypascal.shtml
+
==== FMOD ====
* http://www.afterwarp.net/resources/soundlib
 
* http://code.google.com/p/audiere-bind-delphi/
 
  
==Audorra 库==
+
[https://www.fmod.com/core FMOD Core] comes with an elegant API compatible with C, C++, C#, and Javascript, and runs on all major platforms. It is a closed source solution. It is free for use for non-comercial software, but requires the payment of license fees for commercial software.
  
Lazarus上工作正常:
+
==== FPSound ====
  
http://sourceforge.net/projects/audorra/
+
FPSound is a new library being developed in the mold of fpspreadsheet and fpvectorial: it has independent modules to read, write and play sound files and also an intermediary representation for editing. See [[FPSound]]. Uses OpenAL. Appears dead and non-working.
  
==OMEGA 引擎==
+
==== OMEGA Engine ====
  
OMEGA引擎是一个完整的游戏引擎只一有个文件Omega.dll仅50KB。它可以播放FLAC,OGG,MP3,MP2,AMR和WMA文件。It searches and uses installed audio codecs from the system.(<strike>它在系统中搜索已经安装的音频编解码器</strike>)
+
The OMEGA Engine is a full game engine in single Omega.dll file which is just 50kb. It can successfully play FLAC, OGG, MP3, MP2, AMR and WMA files. It searches and uses installed audio codecs from the system. Windows and Linux only.
  
 
http://sourceforge.net/projects/omega-engine/files/
 
http://sourceforge.net/projects/omega-engine/files/
  
这个项目已经停止,它非常容易使用:
+
The project is dead, but it is very easy to use:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
Media_Play('Music.mp3', TRUE);
 
Media_Play('Music.mp3', TRUE);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==PortAudio==
+
==== OpenAL Library ====
Various bindings for [http://www.portaudio.com/ PortAudio], a cross-platform, open source library for audio playback and recording are available.
+
 
 +
{{Note|The OpenAL Library Framework is pre-installed on all Apple computers running macOS -- see /System/Library/Frameworks/OpenAL.framework. Apple announced at WWD2019 that '''OpenAL is now deprecated''' and will be removed completely in a future release of macOS.}}
 +
 
 +
OpenAL is a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications.
 +
 
 +
The library models a collection of audio sources moving in a 3D space that are heard by a single listener somewhere in that space. The basic OpenAL objects are a Listener, a Source, and a Buffer. There can be a large number of Buffers, which contain audio data. Each buffer can be attached to one or more Sources, which represent points in 3D space which are emitting audio. There is always one Listener object (per audio context), which represents the position where the sources are heard -- rendering is done from the perspective of the Listener.
  
(<strike>[http://www.portaudio.com/ PortAudio]是一个跨平台,支持音频播放和录音的开源库。</strike>)
+
* See the [https://www.openal.org OpenAL website] for documentation, downloads etc.
  
对于一些版本查看[[http://wiki.lazarus.freepascal.org/Multimedia_Programming#Playing_Sounds]]。
+
* A tutorial for Delphi can be found [http://www.noeska.com/doal/tutorials.aspx here].
论坛用户FredvS写了一个Pascal单元,可以动态加载PortAudio:[http://lazarus.freepascal.org/index.php/topic,17521.0.html]
 
  
==SDL + SDL_mixer==
+
* Free Pascal comes with a unit for accessing OpenAL located in fpc/packages/openal as well as [http://svn.freepascal.org/svn/fpc/trunk/packages/openal/examples usage examples].
 +
 
 +
* There is an alternative OpenAL sound manager unit to play wav files by [https://forum.lazarus.freepascal.org/index.php?action=profile;u=59515 Lulu] [https://github.com/Lulu04/OALSoundManager here]. Tested on macOS Mojave 10.14.
 +
 
 +
==== Play Sound Package ====
 +
 
 +
The [[Play Sound Multiplatform|Play Sound Package]] takes a different approach to playing sound cross-platform. For Windows, it uses the native sound system; for Linux it searches the system for programs which will play sound and executes those asynchronously or synchronously via [[TProcess]] or [[TAsyncProcess]]. Note: only works with Windows and Linux.
 +
 
 +
==== PortAudio ====
 +
 
 +
Various bindings for [http://www.portaudio.com/ PortAudio], a cross-platform, open source library for audio playback and recording, are available.
 +
 
 +
Forum user FredvS has written a [http://lazarus.freepascal.org/index.php/topic,17521.0.html Pascal unit] that dynamically loads PortAudio.
 +
 
 +
Some examples can be found [http://breakoutbox.de/pascal/pascal.html#PortAudio here].
 +
 
 +
==== SDL + SDL_mixer ====
  
 
The basic SDL library comes with a very simple sound system. On top of that, SDL mixer adds more sound APIs which build a more flexible solution.
 
The basic SDL library comes with a very simple sound system. On top of that, SDL mixer adds more sound APIs which build a more flexible solution.
  
(<strike>基本的SDL库提供了一个非常简单的音效系统。最重要的是,SDL的混音器增加了更多的声音API,它建立一个更加灵活的解决方案。</strike>)
+
Units for accessing SDL libraries are located in fpc/packages/sdl.
  
访问SDL单位库位于 fpc/packages/sdl.
+
==== SFML/CSFML for FPC ====
  
==FMOD==
+
[https://www.sfml-dev.org/ Simple and Fast Multimedia Library] aka SFML provides a simple interface to the various components of your PC, to ease the development of games and multimedia applications. It is composed of five modules: system, window, graphics, audio and network.  With SFML, your application can compile and run out of the box on the most common operating systems: Windows, Linux, macOS and soon Android & iOS.
  
Is a closed source solution. It is free for use for non-comercial software, but requires the payment of licenses for commercial software.
+
Pre-compiled SDKs for your favorite OS are available on the [https://www.sfml-dev.org/download.php download page].
  
(<strike>它是一个闭源的解决方案。它是免费的但非商业使用软件。要求支付商业使用费用。</strike>)
+
CSFML headers binding for FPC can be found at https://github.com/DJMaster/csfml-fpc
  
==Squall 音效==
+
==== uos (United OpenLib of Sound) ====
  
Lazarus上工作正常: 它具有3D音频和EAX特效,但只支持MP3,OGG和WAV格式。
+
'''uos''': United OpenLib of Sound. '''uos''' unifies the best open-source audio libraries.
  
http://www.afterwarp.net/resources/soundlib
+
With '''uos''' you can:
 +
*Listen to mp3, ogg, wav, flac, m4a, opus, cd audio, ... audio files.
 +
*With 16, 32 or float 32 bit resolution.
 +
*Record all types of input into a file.
 +
*Add DSP effects and filters, however many you want and record it.
 +
*Do web audio-streaming (listen to web-radio and apply filters).
 +
*Listen to multiple inputs and outputs.
 +
*Produce sound with built-in synthesizer.
  
==FPSound==
+
'''uos''' can use the PortAudio, SndFile, Mpg123, Faad, Mp4ff, OpusFile audio libraries and SoundTouch, Bs2b plug-in library.
  
FPSound is a new library being developed in the mold of fpspreadsheet and fpvectorial: it has independent modules to read, write and play sound files and also an intermediary representation for editing. See [[FPSound]]
+
Included in the package:
  
(<strike>FPSound是在fpspreadsheet和fpvectorial基础上开发的新库:它具有独立的模块来读取,编写和播放声音文件并编辑的中间表示。查看 [[FPSound]]</strike>)
+
* examples.
 +
* binary libraries for Linux 32/64, Windows 32/64, macOS 32/64, FreeBSD 32/64 and ARM Rpi.
  
==UOS (United OpenLib of Sound)==
+
It can play mp3, ogg, wav, flac, m4a, opus, cda files.
  
UOS : United OpenLib of Sound. UOS unifies 最好的开源音频库。
+
http://github.com/fredvs/uos/
  
UOS可以:
+
== Recording Sound ==
*播放MP3,OGG,WAV,FLAC,...音频文件。
 
*With 16, 32 or float 32 bit resolution.(<strike>具有16,32或浮点32位分辨率</strike>)
 
*记录所有类型输入到文件中。
 
*添加DSP效果器和过滤器, however many you want and record it.
 
*Listen to multiple inputs and outputs.(<strike>播放多个输入和输出</strike>)
 
  
UOS使用PortAudio,SndFile和Mpg123音频库。
+
=== Native solutions ===
  
包中包含:
+
==== macOS ====
* 示例
 
*  Linux 32/64, Windows 32/64, Mac OSX 32的二进制库
 
  
http://sites.google.com/site/fiensprototyping/U_OS_Test.tar.gz
+
* [[macOS Audio Recorder|AVAudioRecorder]] allows you to make audio recordings straight to a file with very little programming overhead.
 +
 
 +
=== Cross platform solutions ===
 +
 
 +
==== uos (United OpenLib of Sound) ====
 +
 
 +
'''uos''': United OpenLib of Sound. '''uos''' unifies the best open-source audio libraries.
 +
 
 +
With '''uos''' you can:
 +
*Record all types of input into a file.
 +
*Add DSP effects and filters, however many you want and record it.
 +
 
 +
'''uos''' can use the PortAudio, SndFile, Mpg123, Faad, Mp4ff, OpusFile audio libraries and SoundTouch, Bs2b plug-in library.
 +
 
 +
Included in the package:
 +
 
 +
* examples.
 +
* binary libraries for Linux 32/64, Windows 32/64, macOS 32/64, FreeBSD 32/64 and ARM Rpi.
  
 
http://github.com/fredvs/uos/
 
http://github.com/fredvs/uos/
  
=查看更多=
+
== MIDI ==
 +
 
 +
Musical Instrument Digital Interface (MIDI) is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and related audio devices for playing, editing and recording music.
 +
 
 +
See the [[MIDI]] article for more details about the MIDI software aspect.
 +
 
 +
== Text-To-Speech ==
 +
 
 +
See [[Speech Synthesis]] for native and cross-platform solutions.
 +
 
 +
== See also ==
  
 
* [[Audio libraries]]
 
* [[Audio libraries]]
 
+
* [[Video Playback Libraries]]
[[Category:Tutorials/zh_CN]]
 
[[Category:Multimedia/zh_CN]]
 
[[Category:zh]]
 

Latest revision as of 04:25, 11 January 2021

Deutsch (de) English (en) 日本語 (ja) 한국어 (ko) русский (ru) 中文(中国大陆)‎ (zh_CN)

播放视频

The Video Playback Libraries page contains an annotated list of libraries for Windows, as well as any operating system which is supported by FFmpeg or by VLC. These libraries can be used to embed video playback in your applications.

播放音频

本地解决方案

macOS

  • System Sound Services For up to 30 second sound clips, alerts etc.
  • AVAudioPlayer For longer audio files with volume control, pause, stop, resume, loop control, background music etc.
  • macOS NSSound A very simple method for playing system sounds, application bundle sound files, other sound files with volume control, pause, stop, resume, loops etc.
  • OpenAL comes pre-installed on macOS (Deprecated at WWDC2019; to be removed in a future macOS release).

Windows

Windows API

你可以使用Windows API来播放,例如wav文件:

...
uses MMSystem;
...
sndPlaySound('C:\sounds\test.wav', snd_Async or snd_NoDefault);

自动处理故障的方法,这将允许附加路径和非拉丁文字母的文件名:

...
uses LazUTF8;
...
sndPlaySound(pchar(UTF8ToSys('C:\sounds\测试.wav')), snd_Async or snd_NoDefault);

或者

...
uses LazUTF8;
...
sndPlaySound(pchar(UTF8ToConsole('C:\sounds\测试.wav')), snd_Async or snd_NoDefault);
Audiere库

Has bindings for Delphi, but they do not work with FPC:

Squall sound

Squall sound 与FPC一起工作地很好.它有3D音频和EAX效果,但是仅支持MP3,OGG和WAV格式. Open sourced in 在2009年开放源码,似乎已死亡.仅支持Windows.

https://github.com/xtreme3d/squall

跨平台

ACS (Audio Component Suite)

For more information, read the article about the Audio Component Suite

Audorra Library

This library for Linux and Windows works well with Lazarus:

http://sourceforge.net/projects/audorra/

BASS

Closed source. Free for non-commercial.

The BASS library can be downloaded from: http://www.un4seen.com/ and http://www.un4seen.com/forum/?topic=8682.0

There is a DJ application, for Windows, Linux and macOS, written with Lazarus and using Bass lib: https://sites.google.com/site/fiensprototyping/

FMOD

FMOD Core comes with an elegant API compatible with C, C++, C#, and Javascript, and runs on all major platforms. It is a closed source solution. It is free for use for non-comercial software, but requires the payment of license fees for commercial software.

FPSound

FPSound is a new library being developed in the mold of fpspreadsheet and fpvectorial: it has independent modules to read, write and play sound files and also an intermediary representation for editing. See FPSound. Uses OpenAL. Appears dead and non-working.

OMEGA Engine

The OMEGA Engine is a full game engine in single Omega.dll file which is just 50kb. It can successfully play FLAC, OGG, MP3, MP2, AMR and WMA files. It searches and uses installed audio codecs from the system. Windows and Linux only.

http://sourceforge.net/projects/omega-engine/files/

The project is dead, but it is very easy to use:

Media_Play('Music.mp3', TRUE);

OpenAL Library

Light bulb  Note: The OpenAL Library Framework is pre-installed on all Apple computers running macOS -- see /System/Library/Frameworks/OpenAL.framework. Apple announced at WWD2019 that OpenAL is now deprecated and will be removed completely in a future release of macOS.

OpenAL is a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications.

The library models a collection of audio sources moving in a 3D space that are heard by a single listener somewhere in that space. The basic OpenAL objects are a Listener, a Source, and a Buffer. There can be a large number of Buffers, which contain audio data. Each buffer can be attached to one or more Sources, which represent points in 3D space which are emitting audio. There is always one Listener object (per audio context), which represents the position where the sources are heard -- rendering is done from the perspective of the Listener.

  • A tutorial for Delphi can be found here.
  • Free Pascal comes with a unit for accessing OpenAL located in fpc/packages/openal as well as usage examples.
  • There is an alternative OpenAL sound manager unit to play wav files by Lulu here. Tested on macOS Mojave 10.14.

Play Sound Package

The Play Sound Package takes a different approach to playing sound cross-platform. For Windows, it uses the native sound system; for Linux it searches the system for programs which will play sound and executes those asynchronously or synchronously via TProcess or TAsyncProcess. Note: only works with Windows and Linux.

PortAudio

Various bindings for PortAudio, a cross-platform, open source library for audio playback and recording, are available.

Forum user FredvS has written a Pascal unit that dynamically loads PortAudio.

Some examples can be found here.

SDL + SDL_mixer

The basic SDL library comes with a very simple sound system. On top of that, SDL mixer adds more sound APIs which build a more flexible solution.

Units for accessing SDL libraries are located in fpc/packages/sdl.

SFML/CSFML for FPC

Simple and Fast Multimedia Library aka SFML provides a simple interface to the various components of your PC, to ease the development of games and multimedia applications. It is composed of five modules: system, window, graphics, audio and network. With SFML, your application can compile and run out of the box on the most common operating systems: Windows, Linux, macOS and soon Android & iOS.

Pre-compiled SDKs for your favorite OS are available on the download page.

CSFML headers binding for FPC can be found at https://github.com/DJMaster/csfml-fpc

uos (United OpenLib of Sound)

uos: United OpenLib of Sound. uos unifies the best open-source audio libraries.

With uos you can:

  • Listen to mp3, ogg, wav, flac, m4a, opus, cd audio, ... audio files.
  • With 16, 32 or float 32 bit resolution.
  • Record all types of input into a file.
  • Add DSP effects and filters, however many you want and record it.
  • Do web audio-streaming (listen to web-radio and apply filters).
  • Listen to multiple inputs and outputs.
  • Produce sound with built-in synthesizer.

uos can use the PortAudio, SndFile, Mpg123, Faad, Mp4ff, OpusFile audio libraries and SoundTouch, Bs2b plug-in library.

Included in the package:

  • examples.
  • binary libraries for Linux 32/64, Windows 32/64, macOS 32/64, FreeBSD 32/64 and ARM Rpi.

It can play mp3, ogg, wav, flac, m4a, opus, cda files.

http://github.com/fredvs/uos/

Recording Sound

Native solutions

macOS

  • AVAudioRecorder allows you to make audio recordings straight to a file with very little programming overhead.

Cross platform solutions

uos (United OpenLib of Sound)

uos: United OpenLib of Sound. uos unifies the best open-source audio libraries.

With uos you can:

  • Record all types of input into a file.
  • Add DSP effects and filters, however many you want and record it.

uos can use the PortAudio, SndFile, Mpg123, Faad, Mp4ff, OpusFile audio libraries and SoundTouch, Bs2b plug-in library.

Included in the package:

  • examples.
  • binary libraries for Linux 32/64, Windows 32/64, macOS 32/64, FreeBSD 32/64 and ARM Rpi.

http://github.com/fredvs/uos/

MIDI

Musical Instrument Digital Interface (MIDI) is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and related audio devices for playing, editing and recording music.

See the MIDI article for more details about the MIDI software aspect.

Text-To-Speech

See Speech Synthesis for native and cross-platform solutions.

See also